- - PR -
シェルでSQLプラスの起動
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-12-15 01:49
下記シェル文を実行しsynonym_chgという関数を実行すると
"A"の文字が表示されるところまで処理が進んだ後、何も反応が 返ってこなくなってしまい"B"の文字が表示されることはありません。 sqlplusをうまく終了できないみたいなのですがこれはどう対処すれば よろしいでしょうか。よろしくお願いいたします。 #!/bin/bash function synonym_chg { echo "A" sqlplus -s 001/xx001 echo "B" exit; } ##関数の実行 synonym_chg | ||||
|
投稿日時: 2006-12-15 09:08
おはようございます。
kataと申します。
コンソールから上記のコマンドをたたいて、 正常に実行されていらっしゃいますか? | ||||
|
投稿日時: 2006-12-15 10:34
これだとどうですか?
[ メッセージ編集済み 編集者: あんとれ 編集日時 2006-12-15 10:35 ] | ||||
|
投稿日時: 2006-12-16 00:47
お返事ありがとうございます
あんとれさんのおっしゃるようにEOF 付けてみたらうまくいきました。 不思議な感じです。 ありがとうございました。 | ||||
|
投稿日時: 2006-12-16 02:16
もうひとつ質問させてください。
下記シェルのように文字列を戻り値とするシェルを実行すると ./select.sh: line 39: return: A: numeric argument required と出てしまいます。 シェルでは文字列は戻り値として不適切なのでしょうか? #!/bin/bash ### ローディング対象テーブル取得関数 ### function get_loading_table { TABLE_NAME="A" return $TABLE_NAME } a=`get_loading_table` echo $a | ||||
|
投稿日時: 2006-12-16 12:39
かんたろうさんは他の言語での経験がおありのように見受けられます、そちらの概念が今回引っ掛かったのでしょうね
returnで戻せるのは0〜255の数値だったかと、0で正常終了、0以外で異常終了だったかな? 私は普段戻り値を扱わないのでちょっとうろ覚えです 関数の出力結果で文字列を扱うのなら関数内でecho $TABLE_NAME とされては如何でしょうか ちなみに256を入れると一巡して0、257を入れると1が返ってきます(笑) | ||||
|
投稿日時: 2006-12-17 13:04
ご回答ありがとうございます。
return では数値しか返せないのですね。 ご提示のようにechoを使うようにしたいと思います。 ありがとうございました。 |
1