问题描述
我正在尝试在 Linux 上使用 at
命令安排 bash 脚本。
at 22:20 -f /path/to/script.sh
发出上面的命令工作正常。但是,该脚本需要一些参数。在脚本路径后面添加参数会返回错误消息:
at 22:20 -f /path/to/script.sh /arg/one argtwo argthree
syntax error. Last token seen: /
是的,传递给脚本的第一个参数是另一个(绝对)路径。我的猜测是,at
不会将我的脚本视为脚本,而是将其视为文件,正如 at -help
所暗示的那样。
我该如何解决这个问题并将参数添加到脚本中?
解决方法
指定在标准输入上运行的命令,例如通过这里的字符串:
at 22:20 <<< "/path/to/script.sh /arg/one argtwo argthree"
您的命令不会尝试在特定时间运行 /path/to/script.sh
。相反,它从 /path/to/script.sh
读取和复制所有命令,然后运行这些命令。由于您没有调用脚本本身,因此讨论参数没有意义。
您是正确的,它只需要一个文件名,而不是一个命令。你应该只运行 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
。)
你可以在没有 -f 的情况下给出任何命令作为输入:
at 22:20
/path/to/script.sh /arg/one argtwo argthree
^d