我有一个脚本P
,接受文件名作为参数:
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
并将参数传递给从标准输入读取的操作。这很容易编写,甚至可以被重复使用。但是,我想知道,是否带有各种好处的 zsh 没有内置解决此问题的方法?