将AWK结果分配给变量

时间:2011-05-17 13:36:39

标签: 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”

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

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

如何将$INDEXCOUNT | awk ‘{print $3}’的值赋给变量以在“IF”语句中进行检查?

例如:

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

4 个答案:

答案 0 :(得分:49)

以下在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

答案 1 :(得分:0)

或者您可以直接使用:

${INDEXCOUNT##* }

答案 2 :(得分:0)

使用if语句/

进行测试可能更容易
INDEXCOUNT="111 222 333"
echo $INDEXCOUNT | awk '{if ($3 == 333) print $3}';

答案 3 :(得分:-2)

你可以试试这个:

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

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