web-dev-qa-db-fra.com

Attribuer un résultat AWK à une variable

Cela devrait être assez simple et je ne sais pas pourquoi je me bats avec ça.

J'exécute la commande psql suivante à partir d'un script Shell afin de savoir si tous les index ont été supprimés avant d'insérer des données.

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

À ce stade, INDEXCOUNT est égal à "COUNT ------- 0"

Maintenant, si je fais écho à la ligne suivante, j'obtiens le résultat que je veux -

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

Comment attribuer la valeur de $INDEXCOUNT | awk ‘{print $3}’ à une variable pour la vérifier dans une instruction "IF"?

Par exemple:

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

Ce qui suit fonctionne correctement sur bash:

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

Une autre option serait de convertir la chaîne en un tableau:

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

 echo ${b[2]}  # returns 333
54
nimrodm

Ou vous pouvez directement utiliser:

${INDEXCOUNT##* }
0
Dimitre Radoulov

Cela pourrait être plus facile à utiliser pour tester avec l'instruction if /

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