首页 > 解决方案 > 如何将最终结果传输到 bash 文件中?

问题描述

在终端中:

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

它似乎有效,这是解决问题的惯用方式还是该解决方案的一些缺点。谷歌像往常一样不给任何东西。

标签: bashpipestdout

解决方案


您不能只从外部将管道应用于 shell 脚本的特定行。但是,您可以将第一个“hi”打印到 stderr,在这种情况下,您的示例只会反转最终文本:

#!/bin/bash

echo "hi" >&2 &&
read varname &&
echo $varname
./try.sh  | rev

推荐阅读