如何使用 grep 的输出设置 bash 变量

问题描述 投票:0回答:2

我有一个文本文件

hg.ini
,其中包含可以解释为 bash 变量赋值的行:

$ cat hg.ini
[hello goodbye]
x=hello.world
y=goodbye.cruel.cruel.world
z=I.dont.know.why.you.say.goodbye.I.say.hello

我想处理该文件以执行 bash 命令,以这种方式设置 bash 变量:

x=hello.world echo $x
hello.world

我尝试了以下方法,但是

$()
习惯用法被解释为命令而不是变量赋值:

$(grep x= hg.ini|tr -d '\r\n') echo $x
x=hello.world: command not found

我可以用什么来代替?

bash
2个回答
1
投票

您可以像这样获取

grep
结果:

$ typeset -p x
-bash: typeset: x: not found

$ source <(grep 'x=' hg.ini)

$ typeset -p x
declare -- x="hello.world"

正如评论中所指出的,您需要执行分配和后续操作

echo
作为单独的命令:

$ source <(grep 'x=' hg.ini); echo "$x"
hello.world

0
投票

使用

eval
执行文件中的分配。

eval "$(grep '^x=' hg.ini)"
© www.soinside.com 2019 - 2024. All rights reserved.