awkを使って1つのレコードpsqlクエリの出力を処理してから、それをmy expectスクリプトの値に割り当てる必要があります。Awkでエスケープすることを期待する
関連するコード:
spawn $env(SHELL) send "psql -U safeuser -h db test -c \"SELECT foo((SELECT id FROM table where ((table.col1 = \'$user\' AND table.col2 IS NULL) OR table.col2 = \'$user\') AND is_active LIMIT 1));\" | /bin/awk {{NR=3}} {{ print $1 }}; \r" expect "assword for user safeuser:" send "$safeuserpw\r" expect -re '*' set userpass $expect_out(0, string)
私はスクリプトを実行すると、私が手:
産卵/ binに/ bashの は "1" を読んでいないことができません:そのような変数 "送信" PSQLに"-u safeuser -h db test -c \" SELECT foo((SELECT id FROM table where(table.col1 = \ '$ user \'およびtable.col2 ...)」
私には何かがありますか?ここで行方不明ですか?私は、二重の中括弧がawkコードを保護している印象を受けましたブロック。
SSHトンネルを介して同じコマンドを別のボックスにルーティングするという以前の試みからウサギの穴をあまりにも遠ざけてしまったため、戻って来ることができませんでした – Magellan