BASH 脚本中的 grep searchstring /etc/crontab 奇怪行为

BASH 脚本中的 grep searchstring /etc/crontab 奇怪行为

我正在开发一个 BASH 脚本,它通过 crontab 创建自动备份。我正在尝试使用

myVARIABLE=`grep backup /etc/crontab`

如果已输入条目,则返回包含“backup”的行。它似乎没有返回行,而是/etc/crontab返回多个 ls 命令的输出。我已经运行命令

grep backup /etc/crontab

从命令行,它按预期工作。我还可以通过 BASH 脚本 grep 其他文件,它也会返回预期结果。关于为什么/etc/crontab会在脚本中导致 grep 问题有什么想法吗?谢谢!

答案1

这是因为 /etc/crontab 包含星号字符 ( *),如果不转义,该星号字符将被 shell 扩展。

比较这两个命令的输出:

echo $myVariable
echo "$myVariable"

第一个命令使用未转义的变量,因此星号字符将扩展到当前目录中的所有文件。第二个命令是您想要的,即 crontab 文件的真实内容。

相关内容