如何将命令输出中某个字符后的部分读入bash变量?

3
所以我有一条命令,返回以下形式的输出。
># command
VAR1=ABC
VAR2=DEF
VAR3=123

我想从那个命令中读取VAR1和VAR3到一个shell脚本中。因此,逻辑上,我运行以下两个命令。
># command | grep VAR1
VAR1=ABC
># command | grep VAR3
VAR3=123

我应该如何截取第一个等号后面的部分?(以便 "${VAR1}" = "ABC" 和 "${VAR3}" = "123")。需要注意的是,变量的值中可能会有另一个等号,因此我需要保留第一个等号之后的所有内容,包括后续的等号。
2个回答

1
你可以使用awk:
command | awk -F = '/VAR1|VAR3/{print substr($0, index($0, "=")+1)}'
ABC
123

Breakup:

/VAR1|VAR3/    # searches for VAR1 OR VAR3
index($0, "=") # search for = in the record
substr         # gets the substring after first =

1
谢谢,可以了!现在我要跑到远程主机上去:/ - user2824889

0

这应该可以工作:

># command | grep -oP '(?<=VAR1=).*'
ABC
># command | grep -oP '(?<=VAR3=).*'
123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接