使用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,但通常我会这样做:
原文链接:https://www.f2er.com/bash/383361.htmlxargs -a <(echo boo hoo) ./fn.sh
-a告诉xargs从文件中读取,<()语法(可能或不适用于cygwin)是进程替换,它有效地创建了一个命名对象(命名管道或启动/ dev / fd的路径) )可以读取,产生运行所附命令的结果. 这不像管道语法那么方便,因为您必须将数据源放在xargs命令的中间,但它在其他方面是等效的.