面向過程的控制結構之選擇結構

面向過程中的控制結構

    順序結構

    選擇結構

        單分支的if語句

        雙分支的if語句

        多分支的if語句

        case語句

            case SWITCH in

                value1)

                statement

                ...

                ;;

                value2)

                statement

                ....

                ;;

                *)

                statement

                ...

                ;;

            esac

    循環結構

如寫一腳本,測試用戶從鍵盤輸入的字符是數字還是字符

[root@station01 ~]# cat case.sh 
#/bin/bash
#
case $1 in
[0-9])
  echo "$1 is a digit.";;
[a-z])
  echo "$1 is a lower.";;
[A-Z])
  echo "$1 is a Upper.";;
*)
  echo "Unknow.";;
esac

寫一腳本,接收用戶參數start,stop,restart,status之一

[root@station01 ~]# cat case1.sh 
#/bin/bash
#
case $1 in
'start')
  echo "Start server...";;
'stop')
  echo "Stop server...";;
'restart')
  echo "Restart server...";;
'status')
  echo "Running...";;
*)
  echo "`basename $0` (start|stop|restart|status)";;
esac
[root@station01 ~]# cat debug.sh 
#!/bin/bash
#
DEBUG=0
case $1 in
  -v|--verbose)
    DEBUG=1
   ;;
  *)
   echo "Uknown options"
   exit 7
   ;;
esac
[ $DEBUG -eq 1 ] && echo "heloo"
[root@station01 ~]# cat ./adminuser.sh 
#!/bin/bash
#
DEBUG=0
case $1 in
-v|--verbose)
  DEBUG=1
  ;;
esac
useradd tom &>/dev/null
[ $DEBUG -eq 1 ] && echo "User add finished."

寫一腳本,通過選項及參數傳遞,管理系統用戶

[root@station01 ~]# cat adminuser2.sh 
#!/bin/bash
#
DEBUG=0
ADD=0
DEL=0
for I in `seq 1 $#`;do
if [ $# -gt 0 ];then
case $1 in
  -v|--verbose)
    DEBUG=1
    shift
    ;;
  -h|--help)
    echo "Usage:`basename $0` --add USERLIST --del USERLIST -v|--verbose -h|--help"
    exit 0
    ;;
  --add)
    ADD=1
    ADDUSER=$2
    shift 2
    ;;
  --del)
    DEL=1
    DELUSER=$2
    shift 2
    ;;
   *) 
    echo "Usage:`basename $0` --add USERLIST --del USERLIST -v|--verbose -h|--help"
    exit 9
    ;;
esac
fi
done
if [ $ADD -eq 1 ];then
  for USER in `echo $ADDUSER | sed 's@,@ @g'`;do
    if id $USER &>/dev/null;then
      [ $DEBGU -eq 1 ] && echo "$USER exist."
    else
      useradd $USER
      [ $DEBUG -eq 1 ] && echo "Add user $USER finished."
    fi
  done
fi
 
if [ $DEL -eq 1 ];then
  for USER in `echo $DELUSER | sed 's@,@ @g'`;do
    if id $USER &>/dev/null;then
      userdel -r $USER
      [ $DEBUG -eq 1 ] && echo "Delete $USER finished."
    else
      [ $DEBUG -eq 1 ] && echo "No such  $USER ."
    fi
  done
fi

    寫一腳本,顯示系統登錄用戶數及詳細的登錄信息,其中-h選項只能單獨使用,用於顯示幫助信息;-c選項用於顯示登錄數;如同時使用了-v選項時,既顯示用戶的登錄數又顯示登錄用戶的相關信息

[root@station01 ~]# cat logged.sh 
#!/bin/bash
#
declare -i SHOWNUM=0
declare -i SHOWUSERS=0
for I in `seq 1 $#`;do
  if [ $# -gt 0 ];then
    case $1 in
    -h|--help)
      echo "Usage:basename $0 -v|verbose -c -h|--help"
      exit 0
      ;;
    -c|--count)
      SHOWNUM=1
      shift
      ;;
    -v|verbose)
      SHOWUSERS=1
      shift
      ;;
    *)         
      echo "Usage:basename $0 -v|verbose -c -h|--help"
      exit 9
      ;;
    esac
  fi
done   
if [ $SHOWNUM -eq 1 ];then
  echo "Logged user:`who | wc -l`."
  if [ $SHOWUSERS -eq 1 ];then
    echo "They are:"
    who
  fi
fi


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章