【问题标题】:redirecting input for read command in UNIX在 UNIX 中重定向读取命令的输入
【发布时间】:2011-12-15 18:07:06
【问题描述】:

我想使用 read 命令来初始化一个变量,该变量的值来自上一个命令的输出。我希望这可行:

echo some_text | read VAR

但是 $VAR 是空的。 “read 从标准输入中读取一行。”手册页说。管道将 echo 的输出发送到 read 的输入。我哪里错了?

我的工作解决方案是

echo text > file ; read VAR < file

但它使用文件...

【问题讨论】:

标签: shell


【解决方案1】:

我假设你的 shell 是 bash。当有管道时,管道中的每个命令都在一个子shell中执行,父shell连接所有适当的文件描述符。因此,读取命令获取它的标准输入并设置 VAR 变量,然后它的子shell 退出并带走变量。

您可以使用此处的文档

read VAR << END
text
END

或者,在 bash 中,这里的字符串

read VAR <<< "text"

或者进程替换

read VAR < <(echo text)

【讨论】:

    【解决方案2】:

    VAR=$( command ); 怎么样?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    相关资源
    最近更新 更多