Comment stocker une valeur scalaire postgresql sur une variable bash comme dans le 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 écrits différents, mais rien ne semble fonctionner. Merci d'avance.
Placez l'option -c
juste avant son argument - la requête. Remarquez également que vous utilisez l’option supplémentaire -t
pour obtenir uniquement la valeur Tuple. Et bien sûr, utilisez l'opérateur backticks ( `).
L'utilisation de l'option -X
est également recommandée, car un fichier .psqlrc
peut parfois ajouter une sortie redondante, ainsi que l'option -A
, qui désactive l'alignement des colonnes (espaces).
vartest=`psql -X -A -d $dbname -U $username -h localhost -p 5432 -t -c "SELECT gid FROM testtable WHERE aid='1'"`
L'utilisation de l'option -t ou de --tuples-only vous donnera uniquement les lignes, ce qui facilitera leur stockage dans une variable de tableau (si le résultat de la requête contient plusieurs requêtes)
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
en faire une variable de tableau
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