résultat du stock de postgresql dans la variable bash
comment atore une valeur postgresql scalaire sur une variable bash comme dans script ci-dessous?
dbname="testlauf"
username="postgres"
vartest='psql -c -d $dbname -U $username -h localhost -p 5432 "SELECT gid FROM testtable WHERE aid='1';"'
echo "$vartest"
j'ai essayé plusieurs différentes écrits, mais rien ne semble fonctionner. Merci à l'avance.
2 réponses
mettez le -c
option juste avant son argument - la requête. L'esprit aussi en utilisant le-t
option pour obtenir juste la valeur de tuple. Et bien sûr, utiliser les backticks (`) de l'opérateur.
-X
option est également recommandée, comme parfois un .psqlrc
le fichier peut ajouter une sortie redondante, ainsi que le -A
option, qui désactive la colonne aligning (espaces).
vartest=`psql -X -A -d $dbname -U $username -h localhost -p 5432 -t -c "SELECT gid FROM testtable WHERE aid='1'"`
en utilisant l'option-t ou --tuples-only vous donnera les lignes seulement, donc il sera plus facile de les stocker dans la variable array (si le résultat de la requête plus d'un)
vartest =(`psql -t -d $dbname -U $username -c "SELECT gid FROM testtable WHERE aid='1';"`)
echo $vartest
exemple:
résultat de la requête
ubuntu@ratnakri:~$ psql -h localhost -p 5432 -t -U postgres -d postgres -c "select slot_name from pg_replication_slots"
barman
barman2
faire un tableau de variable
ubuntu@ratnakri:~$ RESULT=(`psql -h localhost -p 5432 -t -U postgres -d postgres -c "select slot_name from pg_replication_slots"`)
ubuntu@ratnakri:~$ echo ${RESULT[0]}
barman
ubuntu@ratnakri:~$ echo ${RESULT[1]}
barman2