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