![使用“read”访问 Bash 管道的输出](https://linux22.com/image/1246792/%E4%BD%BF%E7%94%A8%E2%80%9Cread%E2%80%9D%E8%AE%BF%E9%97%AE%20Bash%20%E7%AE%A1%E9%81%93%E7%9A%84%E8%BE%93%E5%87%BA.png)
我正在尝试使用 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。市场力量。:)