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.178linux.com/36455