2017-03-13 118 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