将AWK结果分配给变量

use*_*866 33 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';")
Run Code Online (Sandbox Code Playgroud)

此时,INDEXCOUNT等于"COUNT ------- 0"

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

echo $INDEXCOUNT | awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)

如何$INDEXCOUNT | awk ‘{print $3}’为变量赋值以在"IF"语句中进行检查?

例如:

RETURNCOUNT=$INDEXCOUNT | awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)

nim*_*odm 55

以下在bash上正常工作:

 a=$(echo '111 222 33' | awk '{print $3;}' )
 echo $a # result is "33"
Run Code Online (Sandbox Code Playgroud)

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

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

 echo ${b[2]}  # returns 333
Run Code Online (Sandbox Code Playgroud)

  • RETURNCOUNT=$(echo $INDEXCOUNT | awk '{print $3}') (2认同)