查找用法 - 命令行与脚本

查找用法 - 命令行与脚本

我发现 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 不会在单引号字符串文字内进行变量替换,但会在双引号字符串文字内进行变量替换。

相关内容