cd $patchhome ls $patchhome |grep "-" > /tmp/patchlist_${runtime}.tmp for patchname in `cat /tmp/patchlist_${runtime}.tmp ` do #echo "当前的循环"$patchname replaced_name="$(echo $patchname | sed 's/ //g')" if [[ "$patchname" != "$replaced_name" ]] then mv $patchname $replaced_name echo $info_head_success $runtime "| 补丁调度 |补丁:"$patchname "带空格,已改名" $replaced_name $info_div_end >> $patch_sys_log fi
1 个回复
nccloud
修改环境变量IFS
环境变量IFS,称为内部字段分隔符(internal field separator),定义了bash shell用作字段分隔符的一系列字符。默认情况下,bash shell会将下列字符当做字段分隔符:空格、制表符、换行符
所以可以修改环境变量达到忽略空格的效果,脚本调整如下:
#补丁标准化
IFS_OLD=$IFS
IFS=$'\n'
echo "进入补丁名称预处理.."
cd $patchhome
ls $patchhome |grep "-" > /tmp/patchlist_${runtime}.tmp
for patchname in `cat /tmp/patchlist_${runtime}.tmp `
do
#echo "当前的循环"$patchname
replaced_name="$(echo $patchname | sed 's/ //g')"
if [[ "$patchname" != "$replaced_name" ]]
then
mv $patchname $replaced_name
echo $info_head_success $runtime "| 补丁调度 |补丁:"$patchname "带空格,已改名" $replaced_name $info_div_end >> $patch_sys_log
fi
done
rm -f /tmp/patchlist_${runtime}.tmp
IFS=$IFS_OLD
#补丁结束化