linux shell脚本中处理带空格的文件/变量等

已邀请:

修改环境变量IFS


环境变量IFS,称为内部字段分隔符(internal field separator),定义了bash shell用作字段分隔符的一系列字符。默认情况下,bash shell会将下列字符当做字段分隔符:空格、制表符、换行符


所以可以修改环境变量达到忽略空格的效果,脚本调整如下:

IFS.OLD=$IFS
IFS=$’\n’
#在接下来的代码中使用新的IFS,按换行算,默认为空格
#codes
#使用完毕后恢复IFS原来的值
IFS=$IFS.OLD

实际应用:处理带空格的文件名


#补丁标准化
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
#补丁结束化


要回复问题请先登录注册