bash - 如何在 Bash 中使用读取命令?

标签 bash built-in

当我尝试像这样在 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/

相关文章:

bash - 如何在 Bash 中将变量设置为命令的输出?

bash - -bash : ghci: command not found (Haskell interactive shell, Haskell 安装)

linux - 使用 Shell 脚本递归删除 Linux 中的所有备份文件

bash - vogue(nodeJS 模块)在哪里,以便我可以将其添加到 PATH 中?

bash - 将此处的文档命令通过管道传输到日志文件

c# - 以编程方式获取所有内置类型的列表

linux - 重定向输出时 cd 不起作用?

python - help() 在哪里找到 Python 中的信息?

python - 从字典中分配和调用内置函数 (Python)

qt - CMake + Qt = 刻在石头上的 Qt 定义(又名。-DQT_...)?