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

前端之家收集整理的这篇文章主要介绍了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命令的中间,但它在其他方面是等效的.

原文链接:https://www.f2er.com/bash/383361.html

猜你在找的Bash相关文章