如何将命令的输出作为 Bash 中的命令导入?

gen*_*bee 8 command-line bash

系统

Linux hosek 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

问题

我需要在 bash 脚本中将输出作为命令输出,以存储变量。

例子

sed -n '/# Main configuration./,/# Websites./p' webcheck-$category.cfg | sed '1,1d' | sed '$ d'
Run Code Online (Sandbox Code Playgroud)

此命令返回以下行:

email_sender='some@email.com'
email_recipients='another@email.com'
Run Code Online (Sandbox Code Playgroud)

如何读取/运行这些输出/行作为脚本中的命令?是否将此输出存储到文件中,然后source仅通过命令读取它?

| source在命令末尾尝试过,但它只能从文件中读取。

echo一开始尝试过,但没有效果。

谢谢。

ter*_*don 15

正如pLumo 向您展示的那样,您确实source可以。但是,我建议不要这样做。如果你有这样的事情:

source <(sed -n '/# Main configuration./,/# Websites./p' webcheck-$category.cfg | sed '1,1d' | sed '$ d')

echo "$email_sender"
Run Code Online (Sandbox Code Playgroud)

然后,一年后当您回来查看此脚本时,您将不知道此email_sender变量来自何处。我建议您改为更改命令并使用仅返回变量值而不返回其名称的命令。这样,您可以轻松跟踪每个变量的来源:

email_sender=$(grep -oP 'email_sender=\K.*' webcheck-$category.cfg)
email_recipients=$(grep -oP 'email_recipients=\K.*' webcheck-$category.cfg)
Run Code Online (Sandbox Code Playgroud)