0

我正在尝试at在 Linux 上使用命令来安排 bash 脚本。

at 22:20 -f /path/to/script.sh

发出上面的命令就可以了。但是,该脚本需要一些参数。在脚本路径后面添加 Params 会返回错误消息:

at 22:20 -f /path/to/script.sh /arg/one argtwo argthree
syntax error. Last token seen: /

是的,传递给脚本的第一个参数是另一个(绝对)路径。我的猜测是,正如暗示的那样,这at不会将我的脚本视为脚本,而是将其视为文件。at -help

我该如何解决这个问题并将参数添加到脚本中?

4

3 回答 3

6

指定要在标准输入上运行的命令,例如通过此处的字符串:

at 22:20 <<< "/path/to/script.sh /arg/one argtwo argthree"

您的命令不会尝试/path/to/script.sh某个时间运行。相反,它会读取并复制所有命令,/path/to/script.sh然后再运行这些命令。由于您没有调用脚本本身,因此谈论参数是没有意义的。

于 2021-05-27T20:44:03.160 回答
1

你是对的,它只接受一个文件名,而不是一个命令。您应该只运行at 22:20,然后作为该命令的输入,给出您希望在 22:20 运行的命令(即/path/to/script.sh /arg/one argtwo argthree),然后在单独的行上按 Control-D 以标记输入的结束。它应该看起来像这样($ 是我的提示):

$ at 22:20
/path/to/script.sh /arg/one argtwo argthree
job 11 at Thu May 27 22:20:00 2021
$ 

(请注意,“job 11 ...”是at打印的确认消息。)

于 2021-05-27T20:45:48.973 回答
0

您可以在没有 -f 的情况下将任何命令作为输入:

at 22:20 
/path/to/script.sh /arg/one argtwo argthree
^d
于 2021-05-27T20:44:12.323 回答