我正在學習 bash,所以這可能是一個簡單的問題。我想了解在這種情況下會發生什么,這個腳本沒有真正的用處。讓 DTEST 是一個包含一些隨機檔案的目錄。
for filename in " `ls DTEST/*` " ; do
touch "$filename".txt
done
所以命令替換發生并且 ls 輸出應該是file1 file2 file3. 然后因為命令替換是雙引號的,所以 for 回圈的第一行應該是for filename in "file1 file2 file3". 我認為它應該只創建一個名為file1 file2 file3.txt.
但我已經看到它想要創建一個名為file1'$'\n''file2'$'\n''file3.txt.
我不明白'$'\n''從哪里來。我在 bash 手冊中讀到,雙引號 \ 后跟特殊字符(如 n 表示換行符)保留其特殊含義,但為什么會生成 \n?
uj5u.com熱心網友回復:
ls DTEST/*在單獨的行上輸出每個檔案。此外,輸出將包含目錄名稱(即DEST/file1等)。
當然,您永遠不會ls在真正的腳本中以這種方式使用。相反,您只需使用類似的東西
for filename in DEST/*
do
...
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323981.html
上一篇:bash檢查新目錄并進行比較
