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