我发现 find 命令在命令行上手动运行与在脚本中运行之间存在不同的结果。
如果我在命令行上运行以下命令:
find . -name '*.txt' ! -name '*20120427.txt'
我获取目录中的所有 .txt 文件,除了带有我想避免的日期的文件。
但是,当我在脚本中使用同一行并使用变量来标识日期时:
FDATE=`date +%Y%m%d`
find . -name '*.txt' ! -name '*${FDATE}.txt'
该脚本找到所有 .txt 文件,包括带有我想避免的日期的文件。
两者之间的唯一区别是我在脚本中传递 FDATE 变量。我是否缺少一些明显的东西?我不明白为什么结果不同。
答案1
将单引号更改'*${FDATE}.txt'
为双引号:"*${FDATE}.txt"
Unix shell 不会在单引号字符串文字内进行变量替换,但会在双引号字符串文字内进行变量替换。