编写Shell脚本的简单语法
提到编程,条件、分支、循环等语法肯定少不了。shell脚本编程亦是如此,下面只是结合最近学习的一些简单语法做的笔记,如有错误,欢迎指正。
if条件语句
条件测试操作
test命令:
用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其它值
格式:test 条件表达式 或者
[ 条件表达式 ](注意:方括号[]和条件表达式语句之间至少需要一个空格)
常见的测试类型:测试文件状态;字符串比较;整数值比较;逻辑测试
测试文件状态:[ 操作符 文件或目录 ]
常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否可执行(Excute)该文件
-L:测试是否为符号连接(Link)文件
如何判断当前所在的工作目录是否为 /usr/src? [ $PWD = “/usr/src” ] && echo “YES” || echo “NO”
[root@localhost ~]# [ -d /etc/vsftpd ] [root@localhost ~]# echo $? 0 ==>返回值为0,表示上一步测试的条件成立 [root@localhost ~]# [ -d /etc/hosts ] [root@localhost ~]# echo $? 1 [root@localhost ~]# [ -e /media/cdrom ] && echo "YES" ==>如果测试的条件成立则输出“YES” YES [root@localhost ~]# [ -e /media/cdrom/Server ] && echo "YES“ [root@localhost ~]#
上述&&是“与”的意思,“… && echo YES”表示如果没有输出,则表示前面执行的测试条件不成立或命令出错。(备注:l测试文件是否可写(-w)时,不要以root用户(特权用户)的身份执行测试,否则可能会无法准确判断)
整数值比较:[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)
[root@localhost ~]# who | wc -l 5 [root@localhost ~]# [ `who | wc -l` -le 10 ] && echo "YES" ==>如果登录用户数小于或等于10则输出YES YES [root@localhost ~]# df -hT | grep "/boot" | awk '{print $6}' 12% [root@localhost ~]# BootUsage=`df -hT | grep "/boot" | awk '{print $6}' | cut -d "%" -f 1`
解释: df -hT 查看所有分区的磁盘空间使用情况
grep “/boot” 过滤出关于/boot分的数据行
awk ‘{print $6}’ 以空格为分隔符,只取第六个字段数据
cut -d “%” -f1 以%为分隔符,只取第一个字段数据
[root@localhost ~]# echo $BootUsage 12 [root@localhost ~]# [ $BootUsage -gt 95 ] && echo "YES" ==>如果/boot分区的磁盘使用率超过95%则输出YES
条件测试操作:[ 字符串1 = 字符串2 ]
常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
[root@localhost ~]# read -p "Location:" FilePath Location:/etc/inittab [root@localhost ~]# [ $FilePath = "/etc/inittab" ] && echo "YES" ==>如果键入路径与指定的目录一致则输出YES YES [root@localhost ~]# [ $LANG != "en.US" ] && echo $LANG ==>如果当前的语言环境不是en_US,则输出LANG变量的值 zh_CN.UTF-8
(字符串比较可以用于检查用户输入,例如在提供交互式操作时,判断用户输入的选择项是否与指定的变量内容相匹配)
逻辑测试:[ 表达式1 ] 操作符 [ 表达式2 ]
常用的测试操作符
-a或&&:逻辑与,“而且”的意思(前后两个表达式都成立时整个测试结果才为真,否则为假)
-o或||:逻辑或,“或者”的意思(操作符两边至少一个为真时,结果为真,否则结果为假)
!:逻辑否( 当指定的条件不成立时,返回结果为真)
[root@localhost ~]# echo $USER root [root@localhost ~]# [ $USER != "teacher" ] && echo "Not teacher" ==>如果发现用户不是teacher,则提示“Not teacher” Not teacher [root@localhost ~]# [ $USER = "teacher" ] || echo "Not teacher" Not teacher
逻辑测试指的是:同时使用两个(或多个)条件表达式时,判断它们之间的关系
if语句结构——当“条件成立”时执行相应的操作
单分支:
2015职称计算机考试书PowerPoint2007中 .. 定价:¥45 优惠价:¥42 更多书籍 | |
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 |