Bash 如何在单独的变量中存储多行输出?

Bash 如何在单独的变量中存储多行输出?,bash,shell,Bash,Shell,我必须将每个id1和id2存储在下面提到的单独变量中,而无需执行external\u tool两次。下面是我现在的表现,但这是不可接受的 $ external_tool | grep -iE "id1|id2" id1 Z55Hsh1abm id2 sFXxu4KzkJbXab08UT 上述要求的输出应为 export VAR1=$(external_tool | grep -i id1 | awk '{print $2}') export VAR2=$(external_

我必须将每个id1和id2存储在下面提到的单独变量中,而无需执行
external\u tool
两次。下面是我现在的表现,但这是不可接受的

$ external_tool | grep -iE "id1|id2"
id1 Z55Hsh1abm
id2 sFXxu4KzkJbXab08UT
上述要求的输出应为

export VAR1=$(external_tool | grep -i id1 | awk '{print $2}')
export VAR2=$(external_tool | grep -i id2 | awk '{print $2}')

如何将它们存储在单独的变量中并导出到env var中?

请尝试以下操作:

$ echo $VAR1
Z55Hsh1abm
$ echo $VAR2
sFXxu4KzkJbXab08UT
#/bin/bash
而read-ridval;做
如果[$id=“id1”];然后
导出变量1=$val
elif[$id=“id2”];然后
导出变量2=$val
fi

完成<请尝试以下操作:

$ echo $VAR1
Z55Hsh1abm
$ echo $VAR2
sFXxu4KzkJbXab08UT
#/bin/bash
而read-ridval;做
如果[$id=“id1”];然后
导出变量1=$val
elif[$id=“id2”];然后
导出变量2=$val
fi

完成<您可以通过使用
awk
,使用进程替换,在一次调用外部实用程序中完成此操作:


read-r var1 var2<您可以通过使用
awk的进程替换对外部实用程序进行一次调用来完成此操作:


read-r var1 var2<那么您的问题是什么?什么是
client\u secret
以及
id2
去了哪里?抱歉@tshioo它的id2真的,我唯一的问题是我不能再次运行该工具(意味着外部\u工具只能运行一次),所以我需要能够以所需格式获得输出。感谢您的及时反馈。你的要求已被理解。你能测试一下我的答案吗?那你的问题是什么?什么是
client\u secret
以及
id2
去了哪里?抱歉@tshioo它的id2真的,我唯一的问题是我不能再次运行该工具(意味着外部\u工具只能运行一次),所以我需要能够以所需格式获得输出。感谢您的及时反馈。你的要求已被理解。你能测试一下我的答案吗?这也是一个可以接受的解决方案,在我的情况下,我更改了最后一个声明,以便在我自己的VAR中获得它们。这也是一个可以接受的解决方案,在我的例子中,我改变了最后一个声明,在我自己的VAR中得到了它们。但在一条线路上工作得很好。