bash – 从使用xargs执行的命令读入stdin

使用xargs做了一些我没想到的事情,尽管我觉得这有点道理.这不是我所做的,但这是一个应该显示发生了什么的例子.

fn.sh

#!/usr/bin/bash
index=1
for arg in "$@"; do echo "Arg #$index = '$arg'"; let ++index; done
read -p "type something followed by enter: "  a
echo "You typed '$a'."

现在这是命令:

echo boo hoo | xargs ./fn.sh

现在我想要的是fn.sh可以从stdin读取以允许用户交互,但是这已被xargs篡夺了.我想我可以从一个临时文件中读取xargs,但我想知道它是否可以使用一个未命名的文件.

我从未使用过cygwin,但通常我会这样做:
xargs -a <(echo boo hoo) ./fn.sh

-a告诉xargs从文件中读取,<()语法(可能或不适用于cygwin)是进程替换,它有效地创建了一个命名对象(命名管道或启动/ dev / fd的路径) )可以读取,产生运行所附命令的结果. 这不像管道语法那么方便,因为您必须将数据源放在xargs命令的中间,但它在其他方面是等效的.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...