我有一个 bash 脚本需要在特定时间运行,发现at
它几乎满足了我需要做的事情。但问题是我不确定如何通过 .bashrc 将命令行参数传递给 bash 脚本at
。下面的命令是我在查看其他一些解决方案后最终得到的结果。
echo "-f job.sh argument" | xargs at now + 2 minutes
但这是行不通的。谁能帮我这个?
答案1
删除xargs
(和-f
)。at
如果不使用,则从标准输入读取命令-f
。
该
at
实用程序应从标准输入读取命令并将它们组合在一起作为正在工作,以便稍后执行。
在你的情况下:
echo 'job.sh argument' | at now + 2 minutes
这将job.sh argument
在两分钟内执行。
或者,
at now + 2 minutes <<'AT_JOB'
job.sh argument
AT_JOB
at
您实际上无法将参数传递给作业(at -f job.sh argument ...
不起作用),因此您必须使参数成为作业的一部分,上述两种变体都可以做到这一点。
答案2
at now + 2 minutes
/your/script -flags parameters
^D
我写的地方^D
你应该使用Ctrl D
或者以编程方式,
echo '/your/script -flags parameters' | at now + 2 minutes
例子
date
Fri 24 Jan 12:45:18 GMT 2020
echo 'date >test.txt' | at now + 2 minutes
warning: commands will be executed using /bin/sh
job 1173 at Fri Jan 24 12:47:00 2020