shell脚本处理带空格的文件名

今天在处理文件时遇到个问题,当文件名包含空格时,for循环就出问题了。

例如,我在当前文件夹下建立3个文件名包含空格的文件:

touch "test 1"

touch "test 2"

touch "test 3"

然后for循环输出文件名:

$ for file in ls;

do echo $file;

done

test

1

test

2

test

3

可以看到,文件名被分开了。

要解决这个问题,当然就要从单词分隔符着手。而bash中使用的是$IFS(Internal Field Separator)这个变量,内容为" \n\t":

[root@master guoneizidian]# echo "$IFS" | od -t x1

0000000 20 09 0a 0a

0000004

然后把它改成"\n\b",记得修改前先保存一下:

SALVEIFS=$IFS

IFS=$(echo -en "\n\b")

IFS=$SAVEIFS

shell脚本处理带空格的文件名_第1张图片
image.png

你可能感兴趣的:(shell脚本处理带空格的文件名)