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〜]#
個人公開番号: