Linux 将AWK结果分配给变量

Linux 将AWK结果分配给变量,linux,postgresql,shell,scripting,awk,Linux,Postgresql,Shell,Scripting,Awk,这应该是非常直截了当的,我不知道为什么我要和它斗争 我在一个shell脚本中运行以下psql命令,以确定在插入数据之前是否删除了所有索引 INDEXCOUNT=$(psql -p $dbPort -U enterprisedb -d main_db -c "select Count(*) from all_indexes where index_schema = 'enterprisedb';") 此时,INDEXCOUNT等于“COUNT--------0” 现在,如果我回显下面的行,我会得

这应该是非常直截了当的,我不知道为什么我要和它斗争

我在一个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}'

以下内容在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}'`

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

或者您可以直接使用:

${INDEXCOUNT##* }

使用if语句/

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

RETURNCOUNT=$(echo$INDEXCOUNT | awk'{print$3}')
“$INDEXCOUNT”
不太可能是命令。@glenn:在这种情况下,可以使用do echo。。。其思想是在backticks之间包含任何shell命令,以便将结果放入变量
$()
优于
backticks
,因为它使嵌套命令更容易,尽管此代码可能有助于解决此问题,提供关于为什么和/或如何回答该问题的额外背景将显著提高其长期价值。请在您的回答中添加一些解释。