当我尝试像这样在 Bash 中使用 read
命令时:
echo hello | read str
echo $str
没有回显,而我认为 str
应该包含字符串 hello
。谁能帮我理解这种行为?
最佳答案
脚本命令中的 read
没问题。但是,您在管道中执行它,这意味着它在子 shell 中,因此,它读取的变量在父 shell 中是不可见的。你也可以
也将脚本的其余部分移到子 shell 中:
echo hello | { read str echo $str }
或者使用命令替换从子shell中获取变量的值
str=$(echo hello) echo $str
或者稍微复杂一点的例子(抓取 ls 的第二个元素)
str=$(ls | { read a; read a; echo $a; }) echo $str
关于bash - 如何在 Bash 中使用读取命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7676045/