シェルスクリプトからpsqlテーブルレコードを取得するには?

シェルスクリプトからpsqlテーブルレコードを取得するには?

私はpostgresqlを持ち、10個のレコードを持つテーブルを持っているので、シェルスクリプトの10個のレコードに対して10個のローカル変数が必要です。

次の方法を試しましたが、list123[1]...list123[9]の代わりにlist123[0]変数にすべてのレコードを保存します。

declare -a list123
list123=( "$(psql -t -h 10.100.0.1 -U prasad statistics -c "select command from jobhandler.config_info where conf_name like '%stager%'")" )

list123[0-9]の各レコードに対応するレコードが必要です。

ベストアンサー1

問題は、コマンドの置換に二重引用符を使用したために発生します$()。これは出力全体を単一の複数行文字列に変換します。

努力する:

declare -a list123
list123=( $(psql -t -h 10.100.0.1 -U prasad statistics -c "select command from jobhandler.config_info where conf_name like '%stager%'") )

あなたのテーブルはありませんが、単純なID、名前、dobテーブルを使用して私のシステムでテストしました。

$ list123=($(psql -t -c 'select dob from newtable'))
$ set | grep list123
list123=([0]="1967-03-07" [1]="1964-08-07" [2]="1992-10-19" [3]="1964-12-18" [4]="1945-12-26")

おすすめ記事