添加 crontab - 语法

3 cron cat

crontab -l | { cat; echo "0 0 * * * /path/to/cron/job"; } | crontab -
Run Code Online (Sandbox Code Playgroud)

我从网上拿了这条线,添加一个新的 cron 作业。它运作良好。我得到了怀疑,

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

{ cat; echo "0 0 * * * /path/to/cron/job"; }
Run Code Online (Sandbox Code Playgroud)

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

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

lcd*_*047 7

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

因为您需要将 的输出cat和to 的输出都通过管道echo传输crontab -。如果没有花括号,您就无法将两个命令的输出组合到一个管道中。

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

不。 ... | '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 -
Run Code Online (Sandbox Code Playgroud)

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

是的,但那是因为crontab特别支持。使用-是指stdin和/或sdtout是许多命令所理解的惯例,但它仅仅是一个惯例。它不是 shell 强制要求的,例如,>file或者| command.