2011-05-17 140 views
21

這應該是相當直接的,我不知道爲什麼我在爲它掙扎。將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}' 

回答

37

下工作正常在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

RETURNCOUNT = $(回聲$ INDEXCOUNT | awk的 '{打印$ 3}' ) – user739866 2011-05-17 13:45:40

-2

你可以試試這個:

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

這個想法是在反引號之間包含任何shell命令以將結果存入變量。

+0

'「$ INDEXCOUNT」'不太可能是一個命令。 – 2011-05-17 14:19:20

+0

@glenn:在這種情況下,可以使用echo ......這個想法是在反引號之間包含任何shell命令以將結果放入一個變量 – Mayank 2011-05-17 15:50:28

+1

'$()'比'反引號'更受歡迎,因爲它使嵌套命令更容易 – Silviu 2012-08-16 09:22:53

0

或者你也可以直接使用:

${INDEXCOUNT##* } 
0

這可能是更容易與測試使用if語句/

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