0

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

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

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

请帮忙。

谢谢,

4

2 回答 2

1

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

它可能会帮助您使用以下方法调试您的东西:

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

而不是简单的回声。注意引号!它们很重要。当使用变量的值时,几乎总是应该使用双引号,否则值中的空格和其他讨厌的字符(大部分)会产生不良影响。所以最好试试这个:

ls "$AbsolutePath"
于 2013-10-01T07:55:06.470 回答
0

'ls $AbsolutePath'"ls $AbsolutePath"不一样,里面的 ' '$符号没有任何权力

于 2013-10-01T07:54:22.107 回答