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

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

我有一个 shell 脚本,它接受一个参数并在脚本中使用它。所以要运行我输入的脚本 /path/to/script argument

问题是当尝试设置该文件以使用该at实用程序运行时。我努力了

at -f /path/to/script argument 17:45

at -f '/path/to/script argument' 17:45

但这些选项都不起作用。第一个收到语法错误,第二个说没有这样的文件 有什么建议吗?

答案1

由于at默认从标准输入读取,因此您可以这样做:

echo /path/to/script argument | at 17:45

答案2

我建议在一般情况下遵循@warl0ck的建议——创建一个新脚本,例如/path/to/newscript

 #!/bin/bash
 /path/to/script argument

然后使用以下命令运行它at

 at -f /path/to/newscript 17:45

这使得调整所需的任何参数、运行多个命令等变得容易。

或者,对于偶尔或一次性使用,您可以仅at在选定的时间运行,然后在标准输入上输入您需要的任何命令;点击ctrl-D结束:

 myhost# at 17:45
 /path/to/script argument
 <ctrl-D>
 Job 1 will be executed using /bin/sh

答案3

我也遇到这个问题,用EOF解决了。

这正在启动与远程服务器(sshserverhost)上的参数执行ssh的连接。sshserverhosttest.sh$HOSTNAME

at now + 1 minutes <<EOF
ssh -t sshserverhost 'bash -s' <~/test.sh $HOSTNAME
EOF 

相关内容