微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bash – 如何使用xargs运行脚本中的用户

我正在使用xargs将参数填充到脚本中,我想在其中停止脚本,等待用户输入.就像是:

echo a b c | xargs bash -c 'for a in "$@"; do echo $a; read; done'

但是读取被忽略了.似乎第二个脚本也试图从管道输入它?我已经尝试过xargs -p但它并没有更好.

解决方法

如果给xargs选项-a,则将从文件而不是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’).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐