将多个 grep 输出组合到一个变量中

Roc*_*y86 4 grep bash shell-script variable

基本上我有以下场景,例如

  1. grep 'test: \K(\d+)' $file => 15
  2. grep 'test1: \K(\d+)' $file => 20

有没有办法将两个命令的结果存储到一个变量中,比如用逗号作为分隔符,

Test="grep 'test: \K(\d+)' $file;grep 'test1: \K(\d+)' $file"
Run Code Online (Sandbox Code Playgroud)

答案=eval $Test

预期输出:15,20?

Wis*_*lah 8

是的,您可以使用命令替换来做到这一点:

Test="$(grep 'test: \K(\d+)' $file),$(grep 'test1: \K(\d+)' $file)"
Run Code Online (Sandbox Code Playgroud)

variable=$(..)称为命令替换,它的意思仅是运行 shell 命令并将其输出存储到变量或使用echo命令显示回来。例如显示日期和时间:

echo "Today is $(date)"
Run Code Online (Sandbox Code Playgroud)

并将其存储到变量中:

SERVERNAME="$(hostname)"
Run Code Online (Sandbox Code Playgroud)

您可以连接到输出:

echo "$(hostname),$(date)"
Run Code Online (Sandbox Code Playgroud)

结果将是:

yourhostname,Tue Jan 24 09:56:32 EET 2017
Run Code Online (Sandbox Code Playgroud)