我有一个 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
的连接。sshserverhost
test.sh
$HOSTNAME
at now + 1 minutes <<EOF
ssh -t sshserverhost 'bash -s' <~/test.sh $HOSTNAME
EOF