shell基礎if與case

1.read

  使用read來把輸入值分配給一個或多個shell變量;

  -p 指定要顯示的提示;例如 read -p "SHURU" num

  -t TIMEOUT

  read 從標準輸入中讀取值,給每個單詞分配一個變量,所有剩余單詞都被分配給最后一個變量

2.流程控制

  過程式編程語言:

                順序執行

                選擇執行

                循環執行

  條件選擇if語句:

                 選擇執行

                 if語句嵌套

   單分支:

                 if 判斷條件;then

                 條件為真的分支代碼

                 fi

   雙分支:

                if 判斷條件;then

                 條件為真的分支代碼

                 else

                 條件為假的分支代碼

                fi

   多分支:

   if CONDITION1;then

   if-true

   elif CONDITION2;then

   if-true

   elif CONDITION3;then

   if-true

   ……

   else

           all-false

      fi

   逐條件進行判斷,第一次遇為“真”條件的時候,執行其分支,而后結束整個if語句

  示例:判斷用戶輸入的參數 是否為正整數

#!/bin/bash
#
read -p "shuruyigeshuzi:" num
[ -z $num ] && echo "shurusz!!" && exit
if [ $num -eq 0 ];then
echo "zheshi 0"
exit
 if let aa=$num &>/dev/null;then
    if [ $? -eq 0 ];then
        if [ $num -lt 0 ];then
        echo "$num FZS!!"
        elif [ $num -ge 0 ];then
        echo "$num zs!!"
        else
        echo "$num error ZQ!"
        fi
   fi
   else
   echo "shuru error"
  fi
fi

  條件判斷:case語句

 case 變量引用in

   PAT1)

   分支1

   ;;

   PAT2)

   分支2

   ;;

   *)

   默認分支

   ;;

   esac

#case支持glob風格的通配符:

   *:任意長度任意字符

   ?:任意單個字符

   []:指定范圍內的任意單個字符

   a|b:a或b

  示例:提示用戶輸入yes或 no,并判斷用戶輸入的是yes還是no,或是其它信息

#!/bin/bash
read -p "shuruYEShuoNO:" Ye
case $Ye in
[yY][Ee][Ss]|[Yy])
echo "YES"
;;
[Nn][Oo]|[Nn])
echo "No"
;;
*)
echo "SHURUCUOWU!!!!"
esac

案例練習:

1.寫一個腳本/root/bin/createuser.sh,實現如下功能: 使用一個用戶名做為參數,如果指定參數的用戶存在,就顯 示其存在,否則添加之;顯示添加的用戶的id號等信息 

#!/bin/bash
#
if  id $1 &>/dev/null;then
 echo `id $1`
 else
 useradd $1
 echo `id $1`
fi

2.寫一個腳本/root/bin/filetype.sh,判斷用戶輸入文件路 徑,顯示其文件類型(普通,目錄,鏈接,其它文件類型) 

#!/bin/bash
#
read -p "shuru LJ:" Qw
[ -z $Qw ] && echo "shuruzhifuchuan" && exit
if [ -f $Qw ];then
echo "$Qw PT wenjian"
  elif [ -d $Qw ];then
  echo "$Qw ML wenjian"
  elif [ -h $Qw ];then
  echo "$Qw LJ wenjian"
  else
  echo "shuru ZQ lujing!"
fi

3.列出如下菜單給用戶

disk)show disks info;

mem)show memory info;

cpu)show cpu info;

*)quit;

(2)提示用戶給出自己的選擇,而后顯示對應其選擇的相應系統信息;

#!/bin/bash
#
cat << EOF
disk) show disks info;
mem) show memory info;
cpu) show cpu info;
*)quit;
EOF
read -p "xuanze yishangxuanxiiang:" Qw
[ -z $Qw ] && echo "shuru ZHI!!!" && exit
case $Qw in
disk)
disk -l
;;
mem)
free -h
;;
cpu)
cat  /proc/meminfo
;;
*)
exit
;;
esac

4.傳遞一個參數給腳本,此參數為用戶名

(2)根據其ID號來判斷用戶類型:

0:管理員

1-999:系統用戶

1000+:登錄用戶

#!/bin/bash
#
read -p "SHUJUCANSHU:" num
[ -z $num ] && echo "shuruWK!" && exit
if [ $num -eq 0 ];then
  echo "ROOT USER"
  elif [ $num -ge 1 -a $num -lt 999 ];then
  echo "SYSTM USER"
  elif [ $num -ge 1000 ];then
  echo "login USER"
  else
  echo "NO!!!"
fi

原創文章,作者:鬧鐘哥,如若轉載,請注明出處:http://www.www58058.com/36455

(0)
鬧鐘哥鬧鐘哥
上一篇 2016-08-18
下一篇 2016-08-18

相關推薦

  • N25-第十一周博客作業

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 點對點加密過程如下: 發送方根據單向加密算法計算數據的特征碼 用私鑰加密這段特征碼,生產數字簽名,將數字簽名附著在數據后面 發送方生產臨時對稱密鑰,用對稱加密算法結合對稱加密密鑰加密整段數據(數據+數字簽名) 為保證接收方可以解密,發送方用接收方的公鑰加密對稱加密密鑰,附加在數據后面 接收方用自己的私鑰解密數據…

    Linux干貨 2017-03-30
  • bash腳本編程之流程控制if、for、while、until簡介

    概述     之前介紹了一些bash腳本編程的變量、運算、條件測試的一些基礎內容,了解了腳本實際上就是一些語句加上一些流程控制組合起來,實現某種功能的可執行文件。我們知道,條件測試的目的,實際就是為了實現一種流程的控制,那么本篇就簡單介紹一下bash里面常見的流程控制語句,包括選擇、循環等內容,具體包括以下幾個部分: …

    Linux干貨 2016-08-18
  • 馬哥教育網絡班21期+第10周課程練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) POST –>Boot Sequence(BIOS) –> Boot Loader(MBR) –> Kernel(ramdisk) –>rootfs –>…

    Linux干貨 2016-09-19
  • 第四周作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。                 使用到命令chmod &nbsp…

    Linux干貨 2017-02-02
  • Linux命令執行

    Linux命令 Linux命令是對Linux系統進行管理的命令。對于Linux系統來說,無論是中央處理器、內存、磁盤驅動器、鍵盤、鼠標,還是用戶等都是文件,Linux系統管理的命令是它正常運行的核心,與之前的DOS命令類似。linux命令在系統中有兩種類型:內置Shell命令和外部命令。 命令格式 COMMAND [OPTIONS…] [ARGU…

    Linux干貨 2017-07-15
  • ◆戰前宣言

    從 今 天 開 始, 到 以 后 的 很 久,我 要 努 力,努 力,努 力 的 用 盡 全 力 地 學 好 Linux。 我 知 道,這 起 碼 需 要 很 長 時 間 和 汗 水,但 我 堅 信,付 出 總 是 會 有 回 報 的~ 要記住:比你優秀的人都在努力,你還在彷徨什么? 最后借用一下火影忍者中李…

    Linux干貨 2016-10-24
欧美性久久久久