我有一个脚本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的读取。
这将是微不足道的写作,甚至可以重复使用。但是,我不知道,是否与它的抓斗的好东西不会有解决这个问题的内置?