我创建了一个简单的脚本来列出一堆文件夹中的内容。文件夹列表已从数据库中提取,并且全部存在于系统中。
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
时,我得到了预期的结果。
请帮忙。
谢谢,
答案 0 :(得分:1)
你的经历很奇怪,可能你错了什么。如果echo
的输出与发布时一样,ls
的输出不应该是关于空字符串的错误消息(以冒号开头)。
使用它可能会帮助您调试您的内容:
printf "[%q]\n" "$AbsolutePath"
而不是简单的回声。记住报价!它们很重要。当几乎总是使用变量的值时,你应该使用双引号,否则值中的空格和其他讨厌的字符(主要)有不良影响。所以最好试试这个:
ls "$AbsolutePath"
答案 1 :(得分:0)
'ls $AbsolutePath'
和"ls $AbsolutePath"
不一样,' '
$符号内没有任何力量