Unixシェルスクリプトの選択とケースステートメント

Unixシェルスクリプトの選択とケースステートメント

1)私はこのようなUnixスクリプトを書くのが好きです

echo "Do u want to check application logs ???"
select opt in Yes No
    do
    case $opt in
    "Yes")
         commmands
     ;;
    "No")
    break
        ;;
    esac
    done

echo "Do u want to check non-application logs ???"
select opt in Yes No
    do
    case $opt in
    "Yes")
         commmands
     ;;
    "No")
    break
        ;;
    esac
    done

最初の部分を実行した後に終了し、同じ内容を続けて尋ね、他の部分であるアプリケーション以外のログに移動しません。

2)Unixシェルスクリプトで2つのselect文と2つのCase文を使用できますか?もしそうなら構文を教えてください。

答え1

bashヘルプからselect

選択:名前の選択[Word ... ;]コマンドの実行、完了
...
コマンドは、割り込みコマンドが実行されるまで各選択の後に実行されます。

breakbreakそこにあるコマンドはではcaseありません。ブロックの外側に1つを入れる必要がselectあります。breakcase

たとえば、

echo "Do u want to check application logs ???"
select opt in Yes No
do
    case $opt in
    "Yes")
        commmands
        ;;
    esac
    break
done

また、ここにはcaseタスクが1つだけなので、そのタスクも使用できますが、ifそのかどうかはユーザーに任せます。

関連情報