'ls $ variable'不列出文件夹内容

时间:2013-10-01 07:44:07

标签: bash

我创建了一个简单的脚本来列出一堆文件夹中的内容。文件夹列表已从数据库中提取,并且全部存在于系统中。

listOfFolders='/home/jca/List_of_folders.csv'

for folder in `cat $listOfFolders`
do
    a=`expr substr $folder 1 2`
    b=`expr substr $folder 3 2`
    AbsolutePath=`printf $a'/'$b'/'$folder`
    echo  $AbsolutePath
#   ls $AbsolutePath
done

如果我像这样运行脚本,我会得到我希望ls这样的每个文件夹的正确路径:

37/88/37886
38/28/38284
38/35/38359
15/74/15746
38/78/38789
38/79/38793
38/93/38934
38/93/38937
38/94/38941
39/17/39173
40/38/40380
39/36/39364
39/75/39752
39/83/39832
39/91/39910

如果我随机拿起一行并执行ls,我会按预期获得该文件夹的所有内容。

当我对echo $AbsolutePath发表评论并取消注释ls $AbsolutePath时,我会收到错误列表:

: No such file or directory
: No such file or directory

我很确定它是正确的目录,因为当我在shell中执行ls 39/91/39910时,我得到了预期的结果。

请帮忙。

谢谢,

2 个答案:

答案 0 :(得分:1)

你的经历很奇怪,可能你错了什么。如果echo的输出与发布时一样,ls的输出不应该是关于空字符串的错误消息(以冒号开头)。

使用它可能会帮助您调试您的内容:

printf "[%q]\n" "$AbsolutePath"

而不是简单的回声。记住报价!它们很重要。当几乎总是使用变量的值时,你应该使用双引号,否则值中的空格和其他讨厌的字符(主要)有不良影响。所以最好试试这个:

ls "$AbsolutePath"

答案 1 :(得分:0)

'ls $AbsolutePath'"ls $AbsolutePath"不一样,' ' $符号内没有任何力量