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

3
"$emails"是一个包含数值的数组,我想要从中解析这些数值。为了实现这个目标,我正在使用jq。如果我执行以下命令:
echo "$emails" | ./jq '.total_rows'

我能够获取值,例如4,我想将返回的结果存储到某个变量中。
total_rows="$emails" | ./jq '.total_rows'

但是 total_rows 没有值。

echo $total_rows

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

10

你必须使用正确的引号,就像这样:

total_rows=`echo "$emails" | ./jq '.total_rows'`

``将执行该命令并将total_rows的值赋为它的输出,因此无论是什么

echo "$emails" | ./jq '.total_rows'

数据将存储在 total_rows 中。

正如Tom Fenech在评论中提到的那样,最好使用$()进行命令替换。这提供了更好的可读性。所以你可以这样做:

total_rows=$(echo "$emails" | ./jq '.total_rows')

谢谢@Nidhoegger。它有效。 - Sivailango
3
建议使用$()而不是反引号进行命令替换。在Bash中,您也可以使用total_rows=$(./jq '.total_rows' <<<"$emails")这种方式。 - Tom Fenech
请注意,您不能添加空格 total_rows = ` 不起作用。 - Scott Warren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接