使用 at 执行时如何将命令行参数传递给 bash 脚本?

使用 at 执行时如何将命令行参数传递给 bash 脚本?

我有一个 bash 脚本需要在特定时间运行,发现at它几乎满足了我需要做的事情。但问题是我不确定如何通过 .bashrc 将命令行参数传递给 bash 脚本at。下面的命令是我在查看其他一些解决方案后最终得到的结果。

echo "-f job.sh argument" | xargs at now + 2 minutes

但这是行不通的。谁能帮我这个?

答案1

删除xargs(和-f)。at如果不使用,则从标准输入读取命令-f

POSIX 规范at

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

相关内容