美好的一天,我正在创建一个脚本来读取路径的一级子文件夹/目录。脚本是这样的:
#loopdir.sh
for i in `ls -d $1`
do
echo $i
done
但是当我尝试使用它来读取 /media/My\ Passport/ 时,它会将参数读取为两个不同的目录:
$ ./loopdir.sh /media/My\ Passport/
ls: cannot access /media/My: No such file or directory
Passport/
美好的一天,我正在创建一个脚本来读取路径的一级子文件夹/目录。脚本是这样的:
#loopdir.sh
for i in `ls -d $1`
do
echo $i
done
但是当我尝试使用它来读取 /media/My\ Passport/ 时,它会将参数读取为两个不同的目录:
$ ./loopdir.sh /media/My\ Passport/
ls: cannot access /media/My: No such file or directory
Passport/
尝试这样做(我的理解是您想列出子目录,对吗?):
for i in "$1"/*; do
echo "${i%/}"
done
解析ls
输出是个坏主意:它是一种交互式查看文件信息的工具。它的输出是为人类格式化的,并且会导致脚本中的错误。使用 glob 或 find 代替。了解原因: http: //mywiki.wooledge.org/ParsingLs
并且(最后但并非最不重要): 使用更多报价!它们至关重要。此外,了解 ' 和 " 和 ` 之间的区别。参见http://mywiki.wooledge.org/Quotes和http://wiki.bash-hackers.org/syntax/words
您需要$i
用引号括起来:echo "$i"
不要$i
这将被空间打破
使用“$i”