Linux基础知识系统学习.NO26——shell脚本基本控制语句

11.6.流程控制语句

11.6.1.判断条件语句

11.6.1.1.按文件类型进行判断

在这里插入图片描述

计算机只能做出简单判断而不能感性的分析事物,所以需要给计算机明确的条件以及真假帮助计算机作出判断。
判断语句的格式有两种 test -e+文件名(绝对路径)或者[ -e+文件名(绝对路径) ],如[ test -e /root/anaconda-ks.cfg ]回车什么都不会显示,但是如果再打印?就会看到显示0,如果该文件不存在,那么?就会看到显示0,如果该文件不存在,那么?0?就会显示1。或者[ test -e /root/anaconda-ks.cfg ]&&echo yes||echo no,如果文件存在则返回yes,不存在则返回no。注意方括号里面,两边都应该有空格。

11.6.1.2.按照文件权限判断

在这里插入图片描述
还可以根据文件权限判断,语法和上面一样,但是这种判断不会区分用户,也就是只要有一类用户有这个权限,就会返回真,不会具体区分U,G,R.

11.6.1.3.文件之间比较

在这里插入图片描述
如文件a.txt有一个硬链接ab.txt,则使用命令
[ a.txt -ef ab.txt ] &&echo yes ||echo no ,就能判断这两个各文件是不是同一个文件,也就是判断inode号是否一致。

11.6.1.4. 整数之间的比较

在这里插入图片描述
如[ 20 -ge 30 ]&&echo yes||echo no,就能返回 no

11.6.1.5.字符串之间的比较

在这里插入图片描述

11.6.1.6.多重条件判断

在这里插入图片描述
如[ -n “&num” -a “$num” -gt 2 ] &&echo yes ||echo no即判断num是否有值同时判断是否等于2,都满足才会打印yes。

11.6.2if语句

11.6.2.1.单分支if语句

if [ 条件判断式 ];then
程序
fi
或者:
if [ 条件判断式 ]
then
程序
fi
方括号就是判断条件语句里的方括号,完全一样,在这里给if做为判断条件。
举个栗子:
#!/bin/bash
rate=$(df -h|grep “/dev/sda2”|awk ‘{print $5}’|cut -d “%” -f 1)
if[ $rate -ge 80 ];then
echo “warning! /dev/sda2 if full!!”
fi
用于查看sda2磁盘占用空间大小,占用率太高就发出警告。

11.6.2.2.双分支if语句

语法是:
if [ 条件判断式 ]
then
条件成立执行的程序
else
条件不成立执行的程序
fi

11.6.2.3.多分支if语句

if [ 条件判断式1 ]
then
当条件判断式1成立时,执行程序1
elif [ 条件判断式2 ]
then
当条件判断是2成立时,执行程序2
.
.
.
else
当所有条件都不成立时,执行此程序
fi

11.6.3.case语句

case语句也是多分支语句,和if不同的是,if是可以判断多个条件,但是case只能判断一个条件·,而判断的是这个条件的多个结果。case语法是:
case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
“值2”)
如果变量的值等于值2,则执行程序2
;;
.
.
.
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
和C语言中的switch-case语法执行原理差不多,该语法要注意每个段程序后有两个冒号,最后一个值是星号,还有esac做结尾。

11.6.4.for循环

语法是:
for 变量 in 值1 值2 值3…
do
程序
done
第一次循环就会把值1赋给变量执行一次程序,然后把值2赋给变量再执行一次程序,直到全部都赋值完,程序也执行完,就会退出循环。
for循环也支持C语言中for的用法,但是格式有点不同:
s=0
for((i=1;i<100;i=i+1))
do
s=$ (($ s+$ i))
done
echo $s
这个脚本就可以像C语言一样,算出1累加到100的结果,shell中没有i++,要用i=i+1.

11.6.5.while循环和until循环

for循环是固定循环,只要给了循环次数就会循环多少次,而while是不定循环,也就是条件循环,只要条件判断式成立,循环就会一直继续,知道条件判断式不成立,循环才会停止。
语法是:
while [ 条件判断式 ]
do
程序
done
举个栗子:
i=1
s=0
while [ $ 1 -le 100 ]
do
s=$ (( $ s+$ i))
i=$ (( $ i+1))
done
echo “the sum is :$s”
这样也可以计算从1加到100的值。
until循环就和while刚好相反,条件满足就会终止循环,条件不满足才会执行程序。

ps:最后强调,shell严格控制空格问题,这里由于编辑器的问题,我加了空格,实际上(())当中一个空格都没有,而[ ] 比较表达式的时候又必须要空格,总之,在写表达式的时候出错,要认真检查空格问题,找不出来就自己试一下,看到底需不需要空格。

总结:Linux基础知识到这里就完了,如果能把所有的全部学会,那么最起码达到了管理员水平了,接下来将会继续发布有关Linux系统编程的博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值