私はローカルコンピュータのリモートサーバーで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