系统
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)
归档时间: |
|
查看次数: |
908 次 |
最近记录: |