我正在使用xargs填充脚本的参数,在该脚本中我想停止脚本,等待用户输入。类似的东西:
echo a b c | xargs bash -c 'for a in "$@"; do echo $a; read; done'
但read
会被忽略。似乎第二个脚本也试图从管道输入它?我已经尝试xargs -p
但是没有更好。
答案 0 :(得分:3)
如果选项-a
被赋予xargs
,则将从文件而不是stdin读取参数。您可以使用bash的流程替换和语法<( ... )
来动态创建文件。
xargs -a <( echo A B C ) bash -c 'for x in "$@"; do echo $x; read; done'
请注意,这里$@
错过了第一个参数(在这种情况下为'A')。这是因为bash -c
将'A'放入$0
(通常采用脚本文件的名称),$@
提供$1
,$2
等。 ..(在这种情况下'B'和'C')。