Shell
查找用法 - 命令行 vs 腳本
在命令行上手動執行與在腳本中執行之間,我看到 find 命令的不同結果。
如果我在命令行上執行以下命令:
find . -name '*.txt' ! -name '*20120427.txt'
我得到一個目錄中的所有 .txt 文件,除了那些我想避免的日期。
但是,當我在腳本中有同一行並帶有一個變數來標識日期時:
FDATE=`date +%Y%m%d` find . -name '*.txt' ! -name '*${FDATE}.txt'
該腳本會找到所有 .txt 文件,包括我想要避免的日期。
2 之間的唯一區別是我在腳本中傳遞了 FDATE 變數。我有什麼明顯的遺漏嗎?我不明白為什麼結果會不同。
將單引號更改
'*${FDATE}.txt'
為雙引號:"*${FDATE}.txt"
Unix shell 不會在單引號字元串文字中進行變數替換,但它們會在雙引號字元串文字中進行。