使用“read”访问 Bash 管道的输出

使用“read”访问 Bash 管道的输出

我正在尝试使用 read 命令将一些数据从 Bash 管道传输到 Bash 变量中,如下所示:

$ echo "Alexander the Grape" | read quot
$ echo $quot
$ 

但 quot 是空的。通过谷歌搜索发现这不是一个错误;这是 Bash 的一个预期功能。(第节常见问题解答中的 E5

但是当我在 zsh 中尝试同样的事情时,它成功了。(ksh 也是如此。)有没有办法在 Bash 中实现这一点?我真的不想输入:

$ quot=$(echo "Alexander the Grape")

特别是对于长命令。

答案1

有关此主题的更多阅读材料,请参阅Bash常见问题/024

在 Bash 中有很多种方法可以进行变量赋值:

var=$(command)
read var <<< $(command)
read var <<< EOF
$(command)
EOF
printf -v var "%s" $(command)

ETC。

答案2

read quot < <(echo "Alexander the Grape")

答案3

我猜你是想在变量中创建一个命令,然后通过指定变量来运行它?那么就不要。按原样运行该命令。

答案4

不。如果您更喜欢其他 shell 的行为,请切换到该 shell。市场力量。:)

相关内容