将AWK结果分配给变量[重复]

Posted

技术标签:

【中文标题】将AWK结果分配给变量[重复]【英文标题】:Assign AWK result to variable [duplicate] 【发布时间】:2011-08-27 06:13:49 【问题描述】:

这应该很简单,我不知道我为什么要为此苦苦挣扎。

我正在一个 shell 脚本中运行以下 psql 命令,以便在插入数据之前找出是否所有索引都已删除。

INDEXCOUNT=$(psql -p $dbPort -U enterprisedb -d main_db -c "select Count(*) from all_indexes where index_schema = 'enterprisedb';")

此时,INDEXCOUNT 等于“COUNT ------- 0”

现在,如果我回显以下行,我会得到我想要的结果 -

echo $INDEXCOUNT | awk 'print $3'

如何将$INDEXCOUNT | awk ‘print $3’ 的值分配给变量以在“IF”语句中检查它?

例如:

RETURNCOUNT=$INDEXCOUNT | awk 'print $3'

【问题讨论】:

【参考方案1】:

以下在 bash 上正常工作:

 a=$(echo '111 222 33' | awk 'print $3;' )
 echo $a # result is "33"

另一种选择是将字符串转换为数组:

 a="111 222 333"
 b=($a)

 echo $b[2]  # returns 333

【讨论】:

RETURNCOUNT=$(echo $INDEXCOUNT | awk 'print $3')【参考方案2】:

你可以试试这个:

RETURNCOUNT=`echo $INDEXCOUNT | awk 'print $3'`

这个想法是在反引号之间包含任何 shell 命令,以将结果放入变量中。

【讨论】:

"$INDEXCOUNT" 不太可能是命令。 @glenn:在这种情况下,可以使用 echo... 这个想法是在反引号之间包含任何 shell 命令以将结果放入变量中 $() 优于 backticks,因为它使嵌套命令更容易 虽然此代码可能有助于解决问题,但提供有关 why 和/或 如何 回答问题的附加上下文将显着改善长期价值。请edit你的答案添加一些解释。【参考方案3】:

也可以直接使用:

$INDEXCOUNT##* 

【讨论】:

【参考方案4】:

这可能更容易用于使用 if 语句进行测试/

INDEXCOUNT="111 222 333"
echo $INDEXCOUNT | awk 'if ($3 == 333) print $3';

【讨论】:

以上是关于将AWK结果分配给变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

否定一个布尔变量并将其分配给一个新变量[重复]

Firestore 查询 - 将重复的查询元素分配给变量

将输出分配给Bash中的变量[重复]

将多个变量分配给函数[重复]

将'\'分配给char [重复]

地理位置 - 将纬度和经度值分配给变量[重复]