在Shell脚本中将值存储到变量

Siv*_*ngo 2 bash shell jq

"$ emails"包含值数组,我想从中解析值,为此,我使用的是jq.如果我做以下命令

echo "$emails" | ./jq '.total_rows'
Run Code Online (Sandbox Code Playgroud)

我可以得到值,即4,我想将返回的结果存储到一些变量,

total_rows="$emails" | ./jq '.total_rows'
Run Code Online (Sandbox Code Playgroud)

但是total_rows没有价值.

echo $total_rows
Run Code Online (Sandbox Code Playgroud)

如何将返回的结果存储到变量中?

Nid*_*ger 10

你必须使用正确的引用,如下所示:

total_rows=`echo "$emails" | ./jq '.total_rows'`
Run Code Online (Sandbox Code Playgroud)

``将执行命令并给出total_rows它的值,所以无论输出是什么

echo "$emails" | ./jq '.total_rows'
Run Code Online (Sandbox Code Playgroud)

将被存储在total_rows.

正如Tom Fenech的评论中所提到的,最好使用$()命令替换.它提供了更好的可读性.所以你能做的是:

total_rows=$(echo "$emails" | ./jq '.total_rows')
Run Code Online (Sandbox Code Playgroud)

  • 我建议在反引号中使用`$()`进行命令替换.另外,在bash中你可以使用`total_rows = $(./ jq'.total_rows'<<<"$ emails")`. (3认同)