我有一個腳本P
它接受文件名作爲參數:的zsh:命令替換和正確引用
P file1 file2 file3 ....
我也有一個腳本G
產生一個(通常短名單)文件名,一個文件名每行。在我想寫在zsh中的主腳本中,我想使用G
生成要由P
處理的文件名。天真的嘗試是這樣的:
P $(G)
這工作了近很好,只是我生活在一個世界裏,惡意攻擊者享受與嵌入空格創建文件。如果G
將生成的文件是這樣的名單:
one_file
a file with spaces
P
將被稱爲
P one_file a file with spaces
,而不是
P 'one_file' 'a file with spaces'
一個顯而易見的解決辦法是膠水G
和P
在一起不是通過命令替換,而是通過某種語言的小程序(Ruby,Perl,Python,Algol68,... ),它執行P
的exec並將參數傳遞給stdin的讀取。
這將是微不足道的寫作,甚至可以重複使用。但是,我不知道,是否與它的抓鬥的好東西不會有解決這個問題的內置?