背景:ksh
スクリプトをSunOS5.10からRHEL5.8 に移植する必要があります。一部のデータを取得するためにisqlを呼び出し、isqlなどの最終エンドポイントクライアントユーティリティの意図されたアプリケーションとはまったく逆に、シェルスクリプトの変数で使用されるように解析します。私はこれを継承したばかりであり、決してそのようなハックを自分で設計したわけではないことに注意してください。シェルの変数に値を割り当てるためにisqlを解析することは決してありません。スクリプトでその情報が必要な場合は、アプリケーションとデータストア間でデータをマーシャリングするように設計されたDBD::DBIなどのAPIでPerlを使用します。 。しかし、私は自分が持っているものを持っており、パラメーター内で機能する必要があります。
何が起こっているのかというと、次のパイプ入力はSunOSではデータを返しますが、RHELでは返しません。
echo "SELECT some_field FROM some_table WHERE some_crtra = 'X' \ngo" | isql -U$USER -P$PASS -D$DB -S$SERVER
Solarisでのその出力は次のとおりです。
some_field
------
Y
(1 row affected)
その時点から、スクリプトはawk
上記のストリームからフィールド値のみを抽出するために使用しますが、それは問題ではないため、無視しましょう。
また、パイプされたコマンドを個別に実行するデータを取得できることにも注意してください。つまり、手動でisqlにアクセスし、SQLを実行します。したがって、SQLや接続文字列は問題ではありません。つまり、配管がデータをストリーミングする方法か、isql自体がプラットフォームごとに異なる動作をするかです。
2つのシステムで同じ入力に対して異なる応答がある理由を誰かが理解できますか?配管を変更して機能させる方法はありますか?
ありがとう