Shell-Script
如何將參數傳遞給由另一個腳本生成的腳本
我有以下情況。
我有一個 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 樣式處理管道的一種很好的格式。