- PR -

シェルでSQLプラスの起動

1
投稿者投稿内容
しん
常連さん
会議室デビュー日: 2004/04/04
投稿数: 48
投稿日時: 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
kata
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 69
投稿日時: 2006-12-15 09:08
おはようございます。
kataと申します。

引用:


sqlplus -s 001/xx001




コンソールから上記のコマンドをたたいて、
正常に実行されていらっしゃいますか?
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2006-12-15 10:34
これだとどうですか?

コード:

#!/bin/bash

function synonym_chg
{
echo "A"
sqlplus -s 001/xx001 <<EOF
exit;
EOF
echo "B"
exit;
}




[ メッセージ編集済み 編集者: あんとれ 編集日時 2006-12-15 10:35 ]
しん
常連さん
会議室デビュー日: 2004/04/04
投稿数: 48
投稿日時: 2006-12-16 00:47
お返事ありがとうございます
あんとれさんのおっしゃるようにEOF
付けてみたらうまくいきました。
不思議な感じです。
ありがとうございました。
しん
常連さん
会議室デビュー日: 2004/04/04
投稿数: 48
投稿日時: 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
水都
大ベテラン
会議室デビュー日: 2004/07/22
投稿数: 111
投稿日時: 2006-12-16 12:39
かんたろうさんは他の言語での経験がおありのように見受けられます、そちらの概念が今回引っ掛かったのでしょうね
returnで戻せるのは0〜255の数値だったかと、0で正常終了、0以外で異常終了だったかな?
私は普段戻り値を扱わないのでちょっとうろ覚えです

関数の出力結果で文字列を扱うのなら関数内でecho $TABLE_NAME とされては如何でしょうか

ちなみに256を入れると一巡して0、257を入れると1が返ってきます(笑)
しん
常連さん
会議室デビュー日: 2004/04/04
投稿数: 48
投稿日時: 2006-12-17 13:04
ご回答ありがとうございます。
return では数値しか返せないのですね。
ご提示のようにechoを使うようにしたいと思います。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)