我正在使用xargs来填充脚本的参数,我想在脚本中停止执行,并等待用户输入。类似于:
echo a b c | xargs bash -c 'for a in "$@"; do echo $a; read; done'
但是read
被忽略了。似乎第二个脚本也试图从管道中获取输入?我尝试过xargs -p
,但没有改善。
xargs
选项-a
,则参数将从文件中读取而不是标准输入。您可以使用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')。-o
或 --open-tty
选项:echo a b c | xargs --open-tty bash -c 'for a in "$@"; do echo $a; read; done'
-o, --open-tty
Reopen stdin as /dev/tty in the child process before executing the command. This is use‐
ful if you want xargs to run an interactive application.