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