2017-03-13 85 views
1

重定向到我有一个简单的命令:参数传递给脚本,在

/usr/bin/at -m now < /home/test/script.sh 

我想传递参数给script.sh。

可惜,这是行不通的:

/usr/bin/at -m now < /home/test/script.sh arg1 arg2 

它抛出错误:

syntax error. Last token seen: a

Garbled time

有谁知道怎么办呢?我已经尝试了十几个引号,斜杠和类似于参数的东西。他们每个人都会引发不同的错误。

下面的解决方案不适用于我,因为我必须在另一个bash脚本中运行它。

/home/test/script.sh arg1 | at now 
+0

为什么在另一个脚本运行的时候是管道出了问题? – 123

+0

您并未执行'script.sh',而是将'script.sh'文件的内容传递到'/ usr/bin/at'中。我不确定你描述的管道问题是什么。 – blackghost

+0

该脚本在位于/ vz/private/$ CONTAINER_UUID/scripts的名为mount的文件内执行。其目的很简单:我必须在容器启动过程(挂载)期间运行命令。为什么我在命令中使用的解释也很简单:它使我能够异步运行此脚本。最后,在通过命令执行的脚本中,存在等待15秒的睡眠命令,在容器整个初始化之后执行。 – MegaKaskaskas

回答

3

你的问题是,你要么执行script.sh或通过其源at。但at只是想要一些命令字符串,像(字面上)script.sh args

尝试bash的这里弦乐器

at now <<< "/home/test/script.sh arg1 arg2" 

这相当于

echo "/home/test/script.sh arg1 arg2" | at now