流程控制
顺序执行
选择执行
循环执行
顺序执行:
条件选择:if语句
if语句为选择执行
注意:if语句可嵌套
单分支
if 判断条件:then 条件为真的分支代码 fi
双分支
if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi多分支
if CONDITION1 ; then if-true elif CONDITION2 ; then if-ture elif CONDITION3 ; then if-ture ... else all-false fi
条件判断:case语句
case 变量引用 in PAT1) 分支1 ;; PAT2) 分支2 ;; ... *) 默认分支 ;; esac
case 支持glob 风格的通配符:
*:任意长度任意字符
?:任意单个字符
[]:指定范围内的任意单个字符
a|b:a或b
练习:
1 、写一个脚本/root/bin/createuser.sh ,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息
#!/bin/bash #descriptio #version 0.1 #author gm #date 20160812 if `id $1 &> /dev/null`;then echo "$1 user is exist;" else useradd $1 echo "useradd $1." echo "$1 `id $1`" fi
[root@CentOS6 bin]# createuser.sh gao gao user is exist; [root@CentOS6 bin]# createuser.sh test useradd test. test uid=522(test) gid=522(test) groups=522(test)
2 、写一个脚本/root/bin/yesorno.sh ,提示用户输入yes或no, 并判断用户输入的是yes 还是no, 或是其它信息
#!/bin/bash #description #version 0.2 #author gm #date 20160812 read -p "please input yes or no: " string case $string in [yY]|[yY][eE][sS]) echo "user input is yes.";; [nN]|[nN][oO]) echo "user input is no";; *) echo "user input is other";; esac
[root@CentOS6 bin]# yesorno.sh please input yes or no: yse user input is other [root@CentOS6 bin]# yesorno.sh please input yes or no: yes user input is yes. [root@CentOS6 bin]# yesorno.sh please input yes or no: y user input is yes.
3 、写一个脚本/root/bin/filetype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)
#!/bin/bash #description #version 0.1 #author gm #date 20160812 read -p "please file path: " path if [ ! -e $path ] ;then echo "$path is not exist." elif [ -h $path ] ;then echo "$path is link file." elif [ -f $path ] ;then echo "$path is common file." elif [ -d $path ] ;then echo "$path is dir file" else echo "$path is other file." fi
[root@CentOS6 bin]# filetype.sh please file path: /etc /etc is dir file [root@CentOS6 bin]# filetype.sh please file path: /dev/sda /dev/sda is other file. [root@CentOS6 bin]# filetype.sh please file path: /etc/fstab /etc/fstab is common file.
4 、写一个脚本/root/bin/checkint.sh, 判断用户输入的参数是否为正整数
#!/bin/bash #description #version 0.2 #author gm #date 20160812 read -p "please ont number of int: " num testnum=$num echo $num | grep -qE "^[0-9]+$" if [ $? -eq 0 ] ; then if [ $num -ne 0 ] ; then echo "$num is positive integer." else echo "$num in not positive integer." fi else echo "$num is not positive integer." fi
[root@CentOS6 bin]# checkint.sh please ont number of int: 123 123 is positive integer. [root@CentOS6 bin]# checkint.sh please ont number of int: sdfj sdfj is not positive integer. [root@CentOS6 bin]# checkint.sh please ont number of int: 1.123324 1.123324 is not positive integer. [root@CentOS6 bin]# checkint.sh please ont number of int: -123.123 -123.123 is not positive integer.
原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/36886