Shell

查找用法 - 命令行 vs 腳本

  • August 18, 2020

在命令行上手動執行與在腳本中執行之間,我看到 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 不會在單引號字元串文字中進行變數替換,但它們會在雙引號字元串文字中進行。

引用自:https://unix.stackexchange.com/questions/37501