シェルスクリプト内のリモートサーバーでtimestenクエリを実行する

シェルスクリプト内のリモートサーバーでtimestenクエリを実行する

私はローカルコンピュータのリモートサーバーでTimesten SQLクエリを実行しようとしています。クエリはスクリプト内にあり、データベースに接続できますが、問題はクエリフィールドにあります。

これは私のスクリプトrunttquery.shです。

#!/bin/bash
cmd=$1
ssh dba@rhost << "EOF"
ttIsql "dsn=rhostdsn";
select * from table1 where id='$cmd';
EOF

パラメータ "testid"を渡して上記のスクリプトを実行すると、 ./runttquery.sh testid

SQLクエリの$ cmdは、私が渡した「testid」パラメータに置き換えられず、リモートサーバーからゼロの結果を取得します。

SQLクエリのid値をスクリプトに渡されたパラメータに置き換えます。

答え1

誤って $cmd 変数を置き換え、 heredoc 制限文字列 (EOF) の周りの引用符を削除し、$cmd の周りに {} を追加しました。これで、次は正常に動作します。

#!/bin/bash
cmd=$1
ssh dba@rhost << EOF
ttIsql "dsn=rhostdsn";
select * from table1 where id='${cmd}';
EOF

関連情報