シェルスタディ-9日-シェルフロー制御ステートメントのケース

1.フロー制御ステートメント:ケース

1)ケースステートメントの形式

フロー制御ステートメントは、プログラムフローの選択、ループ、ターン、およびリターンを制御するために使用されます。ケースはコンポーネントの1つです。

Caseステートメントは、さまざまな変数に従って値比較し、さまざまな値に対してさまざまなコマンド操作を実行します

ケースステートメントの形式:

ケース変数または
変数または式の式1)
コマンドシーケンス1 
;;
変数または式2)
コマンドシーケンス2 
;; 
…… 
*)
デフォルトのコマンドシーケンス
esac

2)実行プロセス

最初に「変数または式」の値を使用して値1と比較します。値が同じ場合は、値1の後にコマンドシーケンスを実行して、二重セミコロン「;;」に一致するようにします。次に、esacにジャンプします。これは、ブランチが終了することを意味します。

1と一致しない場合は、値2との比較を続けます。値が同じ場合は、値2の後にコマンドシーケンスを実行して、二重セミコロン「;;」に一致するようにします。次に、esacにジャンプします。これは、分岐の終了を意味します。

同様に、一致する値が見つからない場合デフォルトパターン「*)」の後のコマンドシーケンスは、esacが満たされた後に分岐が終了するまで実行されます。

予防:

A.「変数または式」の後にはinという単語が続き、各「変数または式」の値は閉じ括弧で終わる必要があります。値は変数または定数にすることができます。一致によって値が特定のパターンに一致することが検出された後、その間、すべてのコマンドは;;が終了するまで実行されます。

B.一致する値は、「|」で区切って複数の値にすることができます。

3)ケースステートメントの例

[ルート@テスト〜]#猫first-case.sh 
#!/ binに/ bashのの
猫は、<< EOF 
1.撤回お金
2.預金
3.クエリ
4.撤回 カードを
EOF 
-p読む"あなたのオプションを入力してください" num 
case $ num in  
1)
        echo "引き出し金" 
        ;; 
2)
        echo "預金" 
        ;; 
3)
        echo "クエリ" 
        ;; 
4)
        echo "引き出しカード" 
        ;; 
*)
        echo "選択する有効な番号を入力してください。有効な範囲1〜4 " 
esac 
[root @ test〜]#  
[root @ test〜] #sh first-case.sh1 
。お金を引き出す
2.お金を預ける 
3.クエリ
4。カードを
持って行って
ください
あなたの選択を入力してください:6選択する有効な番号を入力してください、有効な範囲は1-4 [root @ test〜]#shfirst-case.shです 
1.お金を
2。お金を節約する
引き出す3.お問い合わせ
4.カードを
引き出すオプションを入力してください:1
お金を引き出す
[root @ test〜]#

B.Myslqプロセスビュースクリプト

[root @ test〜] #vi case-mysql.sh  
#!/ bin / bash 
read -p "start | stop | restart | status | optionを入力してください:" i 
case $ i in 
start)
        /etc/init.d/ mysqld $ i 
        ps -ef | grep mysqld 
        echo "mysql start" 
        ;; 
stop)
         /etc/init.d/mysqld $ i 
        ps -ef | grep mysqld 
        echo "mysql stop" 
        ;; 
restart)
         /etc/init.d/ mysqld $ i 
        ps -ef | grep mysqld 
        echo "mysql restart" 
        ;; 
status)
         /etc/init.d/mysqld $ i 
        ;; 
*)
        echo "正しいオプションを入力してください" 
esac
root @ test〜]#shcase-mysql.sh请加 
入開始|停止|再起動|ステータス|選択项:開始
ルート2018 1 1 23:04 pts / 0 00:00:00 / bin / sh / usr / bin / mysqld_safe --datadir = / var / lib / mysql --socket = /var/lib/mysql/mysql.sock --pid-file = / var / run / mysqld / mysqld.pid --basedir = / usr --user = mysql 
mysql 2129 2018 3 23:04 pts / 0 00:00:00 / usr / libexec / mysqld --basedir = / usr --datadir = / var / lib / mysql --user = mysql --log-error = / var / log / mysqld.log --pid-file = / var / run / mysqld / mysqld.pid --socket = /var/lib/mysql/mysql.sock 
root 2148 1985 0 23:04 pts / 0 00:00 :00 grep mysqld 
mysql start 
[root @ test〜]#


個人公開番号:

image.png

おすすめ

転載: blog.51cto.com/13440764/2575379