shell脚本编程续---分支语句

if语句做条件判断

单分支:

if 判断条件;then

       statement1

       statement2

fi

双分支:

if  判断条件;then

       statement1

       statement2

else

       statement3

fi

多分支if语句:

if 判断条件1;then

     statement1

elif 判断条件2;then

     statement2

elif 判断条件3;then

     statement3

else 

     statement4

 fi

If语句添加用户例子:

If语句中若命令正常进行,则条件为真,即命令退出状态吗为零。

注意: 

if [ `id -u $NAME` -eq 0 ]  是比较命令执行的结果是否为 0,即判断用户的 UID 是否为0 

if[ id $NAME &>/dev/null ] 是用命令的执行状态是否成功(表示命令是否成功执行,不 关系其输出结果),即判断用户是否存在 

例子:

判断系统中是否有shell为bash的用户,并显示有几个这样的用户

   

注意:第二行、第三行,获取命令的执行状态,若执行状态成功则表示有该用户存在;

           第六行是获取命令的执行结果,即统计出有多少个这样的用户。 

练习:

    给定一个文件,判断这个文件是否有空白行,如果有,则显示空白行的行数,否则显示 “no blank line

    

shell 中如何进行算术运算

1. let 算术运算表达式

 Let C=$A+$B

2. $[算术运算表达式]

 D=$[$A+$B]

3.$((算术运算表达式))

  C=$(($A+$B))

4. expr 算术运算表达式,表达式和操作符之前要有空格

 C=`expr $A + $B`

exit:退出脚本

 exit # (#为0-255,0 表示脚本成功执行)

若直接使用了exit,后边没有数字(即退出状态码),则该脚本的退出状态码为 exit 这条 语句之前的命令执行的状态码 
文件测试:若需要取反,只需要再前面增加”!”即可 

-e $FILEPATH:测试文件是否存在

 -f FILE:测试文件是否为普通文件

 -d FILE:测试指定路径是否为目录

 -r FILE:测试文件对当前用户(执行脚本的用户)来讲是否可读

 -w FILE:测试文件对当前用户来讲是否可写

 -x FILE:测试文件对当前用户来讲是否有执行权限 


如:测试/etc/fstab 是否存在  [ -e /etc/fstab ]

       测试/etc/rc.d/rc/sysinit 对当前用户是否可执行 [ -x /etc/rc.d/rc.sysinit ]  

bash :本地变量(局部变量)--作用域当前的shell进程

            环境变量  --作用域当前shell进程及子进程,下面聊聊其他变量类型:特殊变量,位置变量

            位置变量:

            $1,$2,$3..... 引用脚本的几个参数

            shift:轮换,轮替。当参数过多的时候,不可引用$100,这样太麻烦。所以使用shift踢掉前一个参数,使用一个参数踢掉               一个参数,shift n表示一次踢掉n个参数,默认为1。      

            

            特殊变量:$?:命令执行的状态码  

                              $# :脚本参数的个数

                              $0 :脚本本身  

                              $* :参数列表  

                              $@ :参数列表 但与$*有所不同,后边会讲 

                              $$ :脚本的 PID 


 

猜你喜欢

转载自blog.csdn.net/y805805/article/details/83660652