Shell中case...in分支語句的應(yīng)用
Shell編程中的case…in語句:
偽代碼表示:
case $變量 in 選項(xiàng)1) 分支1 ;; 選項(xiàng)2) 分支1 ;; 選項(xiàng)3) 分支1 ;; . . . 選項(xiàng)n) 分支n ;; *) 其它 ;; esac
- 特別注意:
- 1.
case
后,要寫變量值
; - 2.選項(xiàng)
即變量值
的可能結(jié)果; - 3.
符號(hào)*
表示其它的選項(xiàng),等價(jià)于C語言switch…case分支語句中的default關(guān)鍵字
; - 4.
符號(hào);;
等價(jià)于C語言switch…case分支語句中的break關(guān)鍵字
;
case…in語句選項(xiàng)的分類:
- 1.只有
一個(gè)
字符串; - 2.
多個(gè)
字符串; - 3.通配
0至9
的任意字符; - 4.通配
26個(gè)英文大寫或小寫字母
,需要配合本地語序
使用; - 5.通配
除了特定字符
的其他字符,和C語言
中按位異或符號(hào)
一樣,都是^
;
實(shí)例要求:
從終端輸入年份和月份,判斷月份的天數(shù)。
- 一年有12個(gè)月,其中1,3,5,7,8,10,12為最多天數(shù)的月份,共有31天,4,6,9,11月份的天數(shù)相同,共有30天,剩下的2月份,在閏年時(shí)為29天,在平年時(shí)為28天。
- 思路1:先使用if...else條件語句判斷用戶輸入的年份是閏年還是平年,再使用switch...case分支語句依次輸出用戶輸入月份的天數(shù)。
- 思路2:先使用switch...case分支語句,其中除了2月份,其他月份的天數(shù)可以直接輸出,若用戶在終端輸入的月份是2月,嵌套if...else條件語句判斷用戶輸入的年份是閏年還是平年,并根據(jù)實(shí)際情況輸出天數(shù)。
#include<stdio.h> int main(int argc, const char *argv[]) { int year, month; printf("請(qǐng)輸入年份和月份 > "); scanf("%d%d", &year, &month); if (year < 0) { puts("輸入的年份錯(cuò)誤"); return -1; } if (month < 1 || month > 12) { puts("輸入的月份錯(cuò)誤"); return -2; } /* //思路1: if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) { switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("%d年%d月份,共計(jì)31天\n", year, month); break; case 2: printf("%d年%d月份,共計(jì)29天\n", year, month); break; case 4: case 6: case 9: case 11: printf("%d年%d月份,共計(jì)30天\n", year, month); break; default: printf("輸入月份不合理\n"); break; } } else { switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("%d年%d月份,共計(jì)31天\n", year, month); break; case 2: printf("%d年%d月份,共計(jì)28天\n", year, month); break; case 4: case 6: case 9: case 11: printf("%d年%d月份,共計(jì)30天\n", year, month); break; default: printf("輸入月份不合理\n"); break; } } */ //思路2: switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("%d年%d月份,共計(jì)31天\n", year, month); break; case 2: if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) { printf("%d年%d月份,共計(jì)29天\n", year, month); } else { printf("%d年%d月份,共計(jì)28天\n", year, month); } break; case 4: case 6: case 9: case 11: printf("%d年%d月份,共計(jì)30天\n", year, month); break; default: printf("輸入月份不合理\n"); break; } return 0; }
- 測(cè)試代碼:
#!/bin/bash read -p "請(qǐng)輸入查詢的年份>>" Y read -p "請(qǐng)輸入查詢的月份>>" M if [ $Y -lt 0 ] then echo "輸入的年份有誤,請(qǐng)重新輸入?。?!" exit fi if [ $M -lt 1 -o $M -gt 12 ] then echo "輸入的月份有誤,請(qǐng)重新輸入?。。? exit fi case $M in 4) echo "$Y年$M月共有30天" ;; 6) echo "$Y年$M月共有30天" ;; 9) echo "$Y年$M月共有30天" ;; 11) echo "$Y年$M月共有30天" ;; 2) if [ $((Y%4)) -eq 0 -a $((Y%100)) -ne 0 ] || [ $((Y%400)) -eq 0 ] then echo "$Y年$M月共有29天" else echo "$Y年$M月共有28天" fi ;; *) echo "$Y年$M月共有31天" ;; esac
- 運(yùn)行結(jié)果:
#第一次運(yùn)行
請(qǐng)輸入查詢的年份>>2000
請(qǐng)輸入查詢的月份>>2
2000年2月共有29天
#第二次運(yùn)行
請(qǐng)輸入查詢的年份>>2013
請(qǐng)輸入查詢的月份>>2
2013年2月共有28天
#第三次運(yùn)行
請(qǐng)輸入查詢的年份>>-1999
請(qǐng)輸入查詢的月份>>11
輸入的年份有誤,請(qǐng)重新輸入?。?!
#第四次運(yùn)行
請(qǐng)輸入查詢的年份>>2001
請(qǐng)輸入查詢的月份>>13
輸入的月份有誤,請(qǐng)重新輸入?。?!
#第五次運(yùn)行
請(qǐng)輸入查詢的年份>>2023
請(qǐng)輸入查詢的月份>>8
2023年8月共有31天
#第六次運(yùn)行
請(qǐng)輸入查詢的年份>>2023
請(qǐng)輸入查詢的月份>>9
2023年9月共有30天
到此這篇關(guān)于Shell中case...in分支語句的應(yīng)用的文章就介紹到這了,更多相關(guān)Shell case...in分支語句內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux定時(shí)執(zhí)行任務(wù)at和crontab命令詳解
本篇文章主要介紹了Linux定時(shí)執(zhí)行任務(wù)at和crontab命令這兩個(gè)命令的基本用法和區(qū)別,一起學(xué)習(xí)下。2017-11-11Linux查看系統(tǒng)時(shí)間的詳細(xì)方法總結(jié)
系統(tǒng)時(shí)間是計(jì)算機(jī)硬件和軟件運(yùn)行的基礎(chǔ),在Linux系統(tǒng)中,查看系統(tǒng)時(shí)間是一項(xiàng)基本任務(wù),本文將從多個(gè)方面介紹Linux查看系統(tǒng)時(shí)間的詳細(xì)方法,需要的朋友可以參考下2023-09-09Bash腳本實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)登錄
在服務(wù)器的運(yùn)維管理中,及時(shí)監(jiān)控系統(tǒng)的登錄日志對(duì)保障系統(tǒng)的安全至關(guān)重要,下面我們來看看如何使用Bash腳本實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)登錄日志吧2024-11-11shell之定時(shí)周期性執(zhí)行腳本的方法示例
這篇文章主要介紹了shell之定時(shí)周期性執(zhí)行腳本的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10shell腳本編程之循環(huán)語句學(xué)習(xí)筆記
這篇文章主要介紹了shell腳本編程之循環(huán)語句學(xué)習(xí)筆記,本文內(nèi)容較簡單,可以作為shell循環(huán)語句的備忘錄,忘記怎么寫時(shí)來看看吧~需要的朋友可以參考下2014-09-09