在bash中将空格视为换行符

时间:2014-09-02 10:13:28

标签: bash

我写了一个bash只是为了显示给定目录的所有文件的名称,但是当我运行它时它打破了有空格的文件名。

if [ $# -eq 0 ]
then
echo "give a source directory in the command line argument in order to rename the jpg file"
exit 1
fi

if [ ! -d "$1" ]; then
exit 2
fi

if [ -d "$1" ]
then
for i in $(ls "$1")
do
echo "$i"
done
fi

运行bash脚本时,我得到以下内容

21151991jatinkhurana_image
(co
py).jpg
24041991jatinkhurana_im
age.jpg
35041991jatinkhurana_image
.jpg

我到目前为止尝试的事情是重置IFS变量,如IFS = $(echo -en" \ t \ n \ 0"),但没有发现任何变化....

如果有人知道请帮帮我.....

1 个答案:

答案 0 :(得分:4)

不要遍历ls的结果。解析ls会让世界变得更糟(好读:Why you shouldn't parse the output of ls)。

相反,您可以使用*扩展到给定目录中的现有内容:

for file in /your/dir/*
do
   echo "this is my file: $file"
done

使用变量:

for file in $dir/*
do
   echo "this is my file: $file"
done