How to iterate through a result set from a bash script
12 May 2014
This is my new favourite way:
#!/bin/bash set -e set -u PSQL=/usr/bin/psql DB_USER=myuser DB_HOST=myhost DB_NAME=mydb $PSQL \ -X \ -h $DB_HOST \ -U $DB_USER \ -c "select username, password, first_name, last_name from users" \ --single-transaction \ --set AUTOCOMMIT=off \ --set ON_ERROR_STOP=on \ --no-align \ -t \ --field-separator ' ' \ --quiet \ -d $DB_NAME \ | while read username password first_name last_name ; do echo "USER: $username $password $first_name $last_name" done
Also, you can read into an array:
#!/bin/bash set -e set -u PSQL=/usr/bin/psql DB_USER=myuser DB_HOST=myhost DB_NAME=mydb $PSQL \ -X \ -h $DB_HOST \ -U $DB_USER \ -c "select username, password, first_name, last_name from users" \ --single-transaction \ --set AUTOCOMMIT=off \ --set ON_ERROR_STOP=on \ --no-align \ -t \ --field-separator ' ' \ --quiet \ $DB_NAME | while read -a Record ; do username=${Record[0]} password=${Record[1]} first_name=${Record[2]} last_name=${Record[3]} echo "USER: $username $password $first_name $last_name" done