【发布时间】:2013-11-17 13:17:05
【问题描述】:
我写了两个脚本。一个是myscipt1.sh,它读取一个整数序列(作为参数提供)并报告一个最终数字:
[user@pc user] ./myscript1.sh 34 45 67 234
[user@pc user] 1200
在上面的例子中,脚本返回1200。
另一个脚本myscript2.sh 将一个字符串作为输入并返回一个整数序列:
[user@pc user] ./myscript2.sh a string to provide
[user@pc user] 364 465 786 34 22 1
我想通过传递myscript2.sh的结果来调用myscript1.sh,所以我尝试了:
[user@pc user] ./myscript2.sh my_string | ./myscript1.sh
但我没有运气,因为myscript1.sh(它会检查传递的参数数量,退出没有传递的参数)报告没有传递任何参数。
当我在编写的脚本中使用管道时,Bash 似乎有问题。怎么办?
【问题讨论】:
-
但是像
echo和ls这样的命令可以在管道中使用...我不明白为什么... -
echo和ls可以写入标准输出,因此出现在管道的 left 侧。它们可以出现在管道的右侧,但由于它们不从标准输入中读取,因此它们会忽略从管道接收到的任何内容,就像myscript1.sh似乎正在做的那样。