0

我想从 cron 运行一个 shell 脚本,并让它自动回答。我怎么做?

我试图在 crontab 上放一个脚本。系统是Linux。脚本的一个命令提示一个问题,必须回答(是/否) 例如:手动执行脚本时,脚本执行命令。命令提示问题:你打算删除吗?[Y/N] 和系统等待响应。我回答“Y”并按 ENTER,然后脚本执行删除。

我打算把这个脚本放在 crontab 上。我希望命令会自动回答是的。我该怎么做 crontab ?非常感谢/问候

4

3 回答 3

4

你有两个选择:

  1. 该命令可能有一个不提示问题的开关。例如rm有开关-f(力),所以使用rm -f $file不会提示任何东西。如果可能的话,我更喜欢这个选项。

  2. 使用yes命令,该命令恰好适用于这种情况。例如,如果有的话,yes | rm foo将自动回答y提示rm

于 2012-06-07T19:18:18.883 回答
3

带有管道的通用 Cron

大多数 shell 都可以访问yes命令。您可以将其通过管道传输到 cron 作业中的脚本中。

* * * * * yes | myscript.sh

Vixie Cron 和标准输入

除了上述之外,如果您使用 vixie-cron,您还可以使用百分号将标准输入提供给您的命令。crontab(5) 说:

命令中的百分号 (%),除非用反斜杠 (\) 转义,否则将更改为换行符,第一个 % 之后的所有数据将作为标准输入发送到命令。无法将单个命令行拆分为多行,例如 shell 的尾随“\”。

使用 vixie-cron,以下示例会将标准输入上的字母“y”传递给您的脚本:

* * * * * myscript.sh % y
于 2012-06-07T19:15:51.970 回答
0

你可以加

--交互式=0

在命令的末尾。对于任何询问是/否的 cron 命令,这将自动返回是。

于 2020-02-17T19:01:00.350 回答