我正在編寫一個bash腳本,它使用其他輸入爲命令構建一組複雜的參數。到目前爲止,該腳本使用該技術完美運行:在Bash命令參數中處理引號和轉義空格
whatIwant="command \"$filename-with-spaces-maybe\" -opt1 \"$some_words\" -opt2 $a_number -opt3 \"$a_file_reference\" -opt4 \"$several_sentences\" "
eval $whatIwant
雖然它的作品,我很謹慎使用eval
,因爲一個壞的文件名進行破壞的風險的。我希望能夠跳過分配變量然後對其進行評估,而只是將該命令放在行首,並讓所有參數都由之前在腳本中構建的適當變量設置。
但是,當我嘗試這樣做時,文件名似乎不被視爲單個變量,而是作爲多個參數傳遞給該命令。我嘗試了幾種雙轉義形式,但沒有設法找到正確評估的東西。這很令人沮喪,因爲當我回顯我建立命令的變量時,它會完美地複製並粘貼到命令行並執行我想要的操作。
在bash腳本中這樣做的最佳做法是什麼?
我們真的需要看看你想要完成什麼,而不是使用哪種技術來提供真正的點對點答案。也就是說,你的問題幾乎肯定由[BashFAQ#50]覆蓋(http://mywiki.wooledge.org/BashFAQ/050)。 –
順便說一句,http://shellcheck.net/是你的朋友捕捉案件時引用是失蹤/丟失。 –
另一方面,'command'是一個實際的內建命令的名稱,使它成爲一個錯誤的名稱用作佔位符/示例。 –