关于Linux:将awk结果赋给变量

Assign AWK result to variable

本问题已经有最佳答案,请猛点这里访问。

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

我正在shell脚本中运行以下psql命令,以确定在插入数据之前是否删除了所有索引。

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

此时,indexCount等于"count------0"

现在,如果我回音下面这行,我就得到我想要的结果。-

1
echo $INDEXCOUNT | awk '{print $3}'

如何将EDOCX1[0]的值赋给变量,以便在"if"语句中对其进行检查?

例如:

1
RETURNCOUNT=$INDEXCOUNT | awk '{print $3}'

以下内容在bash上正常工作:

1
2
 a=$(echo '111 222 33' | awk '{print $3;}' )
 echo $a # RESULT IS"33"

另一个选项是将字符串转换为数组:

1
2
3
4
 a="111 222 333"
 b=($a)

 echo ${b[2]}  # RETURNS 333


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

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


或者您可以直接使用:

1
${INDEXCOUNT##* }

您可以尝试以下操作:

1
RETURNCOUNT=`echo $INDEXCOUNT | awk '{print $3}'`

其思想是在backticks之间包含任何shell命令,以将结果变为变量。