我有一個腳本(starter.sh),它只包含以下內容:
#!/usr/bin/env bash
exec "$@"
腳本被配置為執行某個環境變數的內容(即COMMAND)
如果環境變數包含一個命令,它可以作業:
COMMAND='unzip myfile.zip'
但是,如果我嘗試連接多個命令(使用&&or ;)它會失敗:
COMMAND='unzip myfile.zip && cd /home'
出現錯誤:
caution: filename not matched
該錯誤顯然是由 unzip 命令引發的,該命令被 && 弄糊涂了,不知何故不再被解釋為連接。
問題是是否有任何方法可以將命令的串聯串列傳遞給 exec 陳述句而不修改檔案“starter.sh”中的 exec 呼叫我唯一的選擇是將環境變數的內容修改為串列命令(不是 shell 檔案的路徑,否則將是一個明顯的解決方案)
uj5u.com熱心網友回復:
從檔案:
exec: exec [-cl] [-a name] file [redirection ...] Exec FILE,用指定的程式替換這個shell。
也就是說,exec期望檔案執行。然后,當您添加多個命令時,整個字串會嘗試被解釋為檔案名。
因此,如果您想傳遞不是檔案名的內容,請不要使用exec.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/414672.html
標籤:
下一篇:迭代洗掉目錄中的檔案
