当我尝试在Bash中使用read命令,像这样:
echo hello | read str echo $str
没有回音,而我认为str应该包含字符串你好。任何人都可以帮助我理解这种行为吗?
在你的脚本命令中读取正常。但是,您在管道中执行它,这意味着它在一个subshell中,因此,它读取的变量在父shell中不可见。你可以
原文链接:https://www.f2er.com/bash/389827.html>在subshell中移动脚本的其余部分:
echo hello | { read str echo $str }
>或使用命令替换来获取变量的值从子shell
str=$(echo hello) echo $str
或一个稍微复杂的例子
str=$(ls | { read a; read a; echo $a; }) echo $str