gpt4 book ai didi

bash - 如何使用 bash 将命令输出分配给变量并读取

转载 作者:行者123 更新时间:2023-11-29 09:41:53 25 4
gpt4 key购买 nike

我正在尝试将命令的输出分配给多个变量,每个输出“单词”一个。正在做(Linux 上的 bash)

echo foo bar baz | read FOO BAR BAZ
echo $FOO $BAR $BAZ

仅显示空字符串。正在做

read FOO BAR BAZ < <(echo foo bar barz)
echo $FOO $BAR $BAZ

按预期工作。这是怎么回事?我认为使用管道是最明显、最正确的方法。

最佳答案

echo foo bar baz | read FOO BAR BAZ
echo $FOO $BAR $BAZ

在这种情况下,它什么也不打印。原因是因为 pipeline 创建了一个子 shell,FOOBARBAZ 在其中获取值。

echo foo bar baz | { read FOO BAR BAZ ;  echo $FOO $BAR $BAZ ;}

试试这个,它将打印所有变量的正确值。在这里,大括号封装了 echo 命令,以便在读取变量的同一子 shell 中运行。

read FOO BAR BAZ < <(echo foo bar barz)
echo $FOO $BAR $BAZ

在这种情况下,一切都发生在同一个 shell 中,因此您会看到预期的输出。

关于bash - 如何使用 bash 将命令输出分配给变量并读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57144191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com