【发布时间】:2020-12-09 11:12:20
【问题描述】:
在终端中:
echo "hello" && read varname && echo $varname | rev
和:
echo "hi" ; read varname ; echo $varname | rev
给出预期的结果
如果我这样写脚本:
#!/bin/bash
echo "hi" &&
read varname &&
echo $varname
./try.sh | rev
第一行被发送到标准输出:(
如何编写 bash 脚本来传递最终结果?
编辑: 我想我遇到的问题是要了解如何仅通过管道传输我想要传输的内容。上例中的所有 echo 语句都写入标准输出。
编辑2: 现在知道了:
#!/bin/bash
echo test >&0 &&
read varname &&
echo $varname
它似乎有效,这是解决问题的惯用方法还是该解决方案的一些缺点。谷歌像往常一样不提供任何东西。
【问题讨论】:
-
如果您使用 && 和/或 ||,您将需要在同一行上的语句。否则,您可以使用 if 语句。
-
不确定您的问题,但我猜问题是
hi打印为ih?为什么不将| rev添加到脚本中? -
我需要将不同的程序连接在一起,写这个来演示我使用管道获取最后一个标准输出而不是全部的问题
-
最终结果如何?我不明白你的意思?
-
我猜问题是 hi 打印为 ih,是的,这是正确的,抱歉不清楚