如何在Bash中使用read命令?

当我尝试在Bash中使用read命令,像这样:
echo hello | read str
echo $str

没有回音,而我认为str应该包含字符串你好。任何人都可以帮助我理解这种行为吗?

在你的脚本命令中读取正常。但是,您在管道中执行它,这意味着它在一个subshel​​l中,因此,它读取的变量在父shell中不可见。你可以

>在subshel​​l中移动脚本的其余部分:

echo hello | { read str
  echo $str
}

>或使用命令替换来获取变量的值从子shell

str=$(echo hello)
echo $str

一个稍微复杂的例子

str=$(ls | { read a; read a; echo $a; })
echo $str

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...