当我尝试在Bash中使用read命令,像这样:
echo hello | read str echo $str
没有回音,而我认为str应该包含字符串你好。任何人都可以帮助我理解这种行为吗?
在你的脚本命令中读取正常。但是,您在管道中执行它,这意味着它在一个subshell中,因此,它读取的变量在父shell中不可见。你可以
>在subshell中移动脚本的其余部分:
echo hello | { read str echo $str }
>或使用命令替换来获取变量的值从子shell
str=$(echo hello) echo $str
或一个稍微复杂的例子
str=$(ls | { read a; read a; echo $a; }) echo $str
原文地址:https://www.jb51.cc/bash/389827.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。