我創建了一個簡單的腳本來列出一堆文件夾中的內容。文件夾列表已從數據庫中提取,並且全部存在於系統中。
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
我得到預期的結果。
請幫忙。
感謝,
是不是有空格?可能在分配之前有一個導出。 –
感謝大家的幫助。 問題是回車。 Alfe提到(printf「[%q] \ n」「$ AbsolutePath」)幫助我發現每個字符串後面都有一個'\ r'。 這是將其固定後,將所得的代碼:在'貓$ listOfFolders'爲夾 做 一個='EXPR SUBSTR $文件夾1 2' B ='EXPR SUBSTR $文件夾3 2' AbsolutePath ='的printf $ a'/'$ b'/'$ {folder {$'\ r'/}' #printf「[%q] \ n」「$ {AbsolutePath // $'\ r'/}」 # echo $ AbsolutePath ls「$ AbsolutePath」 done # – Lyhan