How to get a one row select into bash variables named for each column in the row
This is my new favourite way:
read username first_name last_name <<< $(psql \ -X \ -U myuser \ -h myhost \ -d mydb \ --single-transaction \ --set ON_ERROR_STOP=on \ --no-align \ -t \ --field-separator ' ' \ --quiet \ -c "select username, first_name, last_name from users where id = 5489") echo "username: $username, first_name: $first_name, last_name: $last_name"
How sweet is that? Another way is to read it into an array:
#!/bin/bash set -e set -u declare -a ROW=($(psql \ -X \ -h myhost \ -U myuser \ -c "select username, first_name, last_name from users where id = 5489" \ --single-transaction \ --set AUTOCOMMIT=off \ --set ON_ERROR_STOP=on \ --no-align \ -t \ --field-separator ' ' \ --quiet \ mydb)) username=${ROW[0]} first_name=${ROW[1]} last_name=${ROW[2]} echo "username: $username, first_name: $first_name, last_name: $last_name"