Shell-Script

如何將參數傳遞給由另一個腳本生成的腳本

  • November 10, 2016

我有以下情況。

我有一個 Perl 腳本,它接受一個 ID 並從數據庫中查找一些參數。可以說look_up_args.pl 234列印以下內容abc 123 "something with spaces"

我有另一個script.sh執行以下操作的shell 腳本

some_command --param1 $1 --param2 $2 --par3 "$3" ...

我想做的是用參數呼叫腳本

我嘗試了以下2種方法

./script.sh `./look_up_args.pl 234`
./script.sh $(./look_up_args.pl 234)

仍然每當我執行script.sh,$3似乎只包含 "something"導致我的腳本失敗。我正在尋找在沒有任何形式的外殼擴展/等的情況下傳遞帶引號的字元串…第三個參數可能包含其他特殊的 bash 字元,但將始終被引用。

我不會推薦這個,但嘗試:

eval "./script.sh $(./look_up_args.pl 234)"

這應該可行,但請記住,這eval將評估look_up_args.pl輸出發生的任何情況,這意味著您容易受到程式碼注入的影響。

更好的選擇是 @thrig 在評論中建議的:使用標準化的數據格式在工具之間傳遞數據。即使是換行符分隔的字元串也是 shell 樣式處理管道的一種很好的格式。

引用自:https://unix.stackexchange.com/questions/322401