将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结果分配给变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章