添加 crontab - 语法

添加 crontab - 语法
crontab -l | { cat; echo "0 0 * * * /path/to/cron/job"; } | crontab -

我从网上获取了这一行,以添加一个新的 cron 作业。它运作良好且良好。我心里有疑问,

1)为什么我们需要这里的大括号(或者我们可以使用单引号),

{ cat; echo "0 0 * * * /path/to/cron/job"; }

2)为什么我们需要cat;这里的命令?

3) crontab -.如果我的理解是正确的,是否-会被管道中上一个命令的输出替换?

答案1

1)为什么我们需要大括号

因为您需要将 的输出和tocat的输出通过管道传输。如果没有花括号,您将无法将两个命令的输出组装在一个管道中。echocrontab -

(或者我们可以在这里使用单引号)

没有。 ... | 'cat; echo "0 0 * * * /path/to/cron/job"' | ...意思是“通过管道传输到名为cat; echo "0 0 * * * /path/to/cron/job"”的可执行文件。这没有道理。

2)为什么我们需要cat;这里的命令?

你不知道。您可以更有效地编写相同的内容:

{ crontab -l; echo '0 0 * * * /path/to/cron/job'; } | crontab -

3) crontab -.如果我的理解是正确的,是否-会被管道中上一个命令的输出替换?

是的,但那是因为crontab特别支持这一点。使用-来表示stdin和/或是sdtout许多命令都可以理解的约定,但它只是一个约定。它不是由 shell 强制执行的,例如>file| command

相关内容