将参数传递给 at -f 脚本

问题描述

我正在尝试在 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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...