dポイントプレゼントキャンペーン実施中!

お世話になります。

現在シェルを作成しています。
既に存在するシェル(100個)を順番に実行するシェルを
作成しようとしています。
しかし、その存在するシェルは実行すると、YES/NO 
の確認メッセージに答えないと、進まないようになってい
ます。
そのため、確認メッセージに中断されて連続で実行できません。
この確認メッセージで止まらずに連続実行する手段は
あるのでしょうか?
シェルに詳しい方のご教授ねがいます。

■既に存在するシェルのメッセージ確認の個所

echo $変数 "実行しますか(確認メッセージ?) [N] => \c"

read YN
echo "
"

if [ "$YN" != 'Y' -a "$YN" != 'y' ];then
echo ' 実行しません'
exit 1
fi

A 回答 (3件)

yesコマンドも無いとは想像できなかった.


OSぐらい書きましょう.

でも,各スクリプトで,問い合わせが一回なら,

echo y | foo001

で十分ですね.
    • good
    • 0
この回答へのお礼

ありがとうございます。
実行できました。

yesコマンドというのがあったのですね、
知りませんでした。

お礼日時:2003/12/02 16:32

きちんと「シェルスクリプト」と表記する癖をつけましょう.



本題ですが,既存のシェルスクリプト名を foo001 として,

yes | foo001

でいかが?

この回答への補足

回答有難うございます。

>きちんと「シェルスクリプト」と表記する癖をつけましょう.
ご指摘ありがとうございます。以後、気をつけます。

実行したら、以下のとおりでした。

% yes | ファイル名
yes: コマンドが見つかりません。
ファイル名: コマンドが見つかりません。

補足日時:2003/12/02 15:32
    • good
    • 0

readで入力を求めている構成になっていますので、まずはその部分をなくせばいいと思います。


100個連続で実行するうち、「正常の場合は続けるが異常の場合は終了する」という判定が必要であれば、

#!/bin/sh
processes="process_1 process_2 ... process_100"

for process in $processes
do
$process
# 0:正常
if [ $? -ne 0 ]; then
echo "異常終了しました。"
exit 2
fi
done

のように書けばいいと思います。
なお、上記のロジックは100個のシェルを1つの中で一気に実行するシェルというイメージで書いています。

process_1は実行するがprocess_2は実行しないということが、プロンプトの入力以外の情報からわかるようであれば、その条件を付け加えればいいと思います。

この回答への補足

回答有難うございます。
ですが、すみません書き忘れました。
すでに存在するシェルは、編集できません。
このシェルは、あるDBのパッチ適用シェルで、編集するとサポートが受けられなくなるからです。

補足日時:2003/12/02 15:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!