#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/
答案 0 :(得分:5)
尝试这样做(我的理解是你要列出子目录,我是对的吗?):
for i in "$1"/*; do
echo "${i%/}"
done
解析ls
输出是一个坏主意:它是一个交互式查看文件信息的工具。它的输出格式化为人类,并将导致脚本中的错误。使用globs或代替。了解原因:http://mywiki.wooledge.org/ParsingLs
并且(最后但并非最不重要):使用更多语录!它们至关重要。另外,了解'和'与`之间的区别。请参阅http://mywiki.wooledge.org/Quotes和http://wiki.bash-hackers.org/syntax/words
答案 1 :(得分:1)
您需要在引号中加$i
:echo "$i"
答案 2 :(得分:0)
不要$ i
这会打破空间
使用“$ i”