欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Shell中case...in分支語句的應(yīng)用

 更新時(shí)間:2023年08月21日 15:55:09   作者:李十五哥  
shell作為一種腳本編程語言,同樣包含循環(huán)、分支等其他程序控制結(jié)構(gòu),從而輕松完成更加復(fù)雜、強(qiáng)大的功能,本文主要介紹了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反彈shell的原理詳解

    linux反彈shell的原理詳解

    這篇文章主要介紹了linux反彈shell的原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Linux定時(shí)執(zhí)行任務(wù)at和crontab命令詳解

    Linux定時(shí)執(zhí)行任務(wù)at和crontab命令詳解

    本篇文章主要介紹了Linux定時(shí)執(zhí)行任務(wù)at和crontab命令這兩個(gè)命令的基本用法和區(qū)別,一起學(xué)習(xí)下。
    2017-11-11
  • Linux查看系統(tǒng)時(shí)間的詳細(xì)方法總結(jié)

    Linux查看系統(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-09
  • Bash腳本實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)登錄

    Bash腳本實(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-11
  • shell之定時(shí)周期性執(zhí)行腳本的方法示例

    shell之定時(shí)周期性執(zhí)行腳本的方法示例

    這篇文章主要介紹了shell之定時(shí)周期性執(zhí)行腳本的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • shell腳本中使用return和exit的方法

    shell腳本中使用return和exit的方法

    return和exit各有用途,合理使用可以使shell編程更規(guī)范可控,return是一個(gè)關(guān)鍵字, exit是一個(gè)函數(shù),這篇文章主要介紹了shell腳本之如使用return和exit,需要的朋友可以參考下
    2023-08-08
  • Shell用sed命令刪除特定行的方法

    Shell用sed命令刪除特定行的方法

    這篇文章主要介紹了Shell用sed命令刪除特定行的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • shell腳本編程之循環(huán)語句學(xué)習(xí)筆記

    shell腳本編程之循環(huán)語句學(xué)習(xí)筆記

    這篇文章主要介紹了shell腳本編程之循環(huán)語句學(xué)習(xí)筆記,本文內(nèi)容較簡單,可以作為shell循環(huán)語句的備忘錄,忘記怎么寫時(shí)來看看吧~需要的朋友可以參考下
    2014-09-09
  • shell 備份數(shù)據(jù)庫、代碼上線的腳本

    shell 備份數(shù)據(jù)庫、代碼上線的腳本

    Shell 是一個(gè)用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設(shè)計(jì)語言。這篇文章主要介紹了shell腳本之備份數(shù)據(jù)庫、代碼上線,需要的朋友可以參考下
    2020-02-02
  • 使用iconv批量改變文件編碼的shell腳本

    使用iconv批量改變文件編碼的shell腳本

    在開發(fā)中,我們經(jīng)常需要對(duì)N多文件編碼進(jìn)行更改,iconv只能對(duì)單文件的進(jìn)行更改,怎么辦呢?我們寫一個(gè)shell腳本來解決這個(gè)問題
    2014-08-08

最新評(píng)論