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 10:10
下一篇 2016-08-18 13:36

相關推薦

  • linux再次入門

               時隔一年,重新拾起Linux,從頭開始再學一遍            現在來總結一下曾經可能聽說過但是我以前絕對不會的命令(尷尬臉) 克隆窗口:右鍵單擊點克隆窗口(真是…

    2017-07-15
  • DNS相關配置

    DNS基礎概念: DNS全稱為Domain Name System。它作為將域名和IP地址相互映射的得一個分布式數據庫,能夠使人更方便的訪問互聯網 DNS使用TCP和UDP得53號端口 BIND是DNS得實現方式之一 named是bind程序得運行的進程名 named進程的主要運行者是named用戶,為了安全起見,它的程序也應該以named用戶運行 配置正向…

    Linux干貨 2017-05-30
  • 常用磁盤陣列說明

    一.什么是磁盤陣列     磁盤陣列英文全名為RedundantArrays of Inexpensive Disks(RAID),即容錯廉價磁盤陣列。     RAID可以將一些容量較小的磁盤通技術手段組成一個容量較大的磁盤設備,而且不只是容量上的提升,RAID還可以提供數據?!?/p>

    Linux干貨 2015-04-02
  • gitlib環境部署

         GitLab是利用 Ruby on Rails一個開源的版本管理系統,實現一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋??梢怨芾韴F隊對倉庫的訪問,它非常易于瀏覽提交過的版本并提供一個文件歷史庫。它還提供一個代碼片段收集功能可以輕松…

    2016-05-19
  • 第一周總結(linux系統初識和簡單命令)

    一、linux操作系統初識         了解操作系統之前我們需要先了解一下計算機的硬件組成,因為操作系統都是運行在硬件之上。遵循馮諾依曼體系,計算機是由控制器、運算器、存儲器、輸入設備、輸出設備五部分組成。對應到我們現在使用計算機上硬件分別為:        &nb…

    Linux干貨 2016-12-26
  • 快速搭建SVN服務器

    一、背景介紹 svn服務器是一款上傳代碼的工具(貌似這么說不怎么嚴謹,但是在日常工作中基本上是這么用的),今天一個小伙伴折騰了一天也沒有搭建好這個svn服務器。各種問題,其實搭建SVN服務器最重要的就是三個配置文件(svnserver.conf、 passwd 、authz)。出了問題的話十有八九是這三個配置文件的問題。最后,我自己搭建了一個,測試成功。于是…

    Linux干貨 2016-12-11
欧美性久久久久