目录
test测试命令或者用 [ 测试条件 ] 也行,注意括号两边有空格
1、read命令:
read命令就是提示用户从键盘读入数据并赋值给变量,从而实现简单的交互过程
选项:
-p:用来设置提示信息的
-t: 设置等待时间,单位是秒,若在规定的时间内未输入自动退出脚本的执行。
2、判断语句常用的判断符号
test测试命令或者用 [ 测试条件 ] 也行,注意括号两边有空格
常见的测试比较的方法:
2.1 比较符:
-eq:等于= -ne就是不等于的意思 -gt:大于> -ge:大于或等于>= -lt:小于< -le:小于或等于<=
2.2 文件比较符与文件判断符:
-e 文件名:判断文件或目录是否存在
-r文件名:判读文件是否有读的权限
-w是否有写的权限
-x:是否有可执行的权限
-s:文件存在并且至少有一个字符即为真
-d:判断文件是否存储并且为目录
-f:判断文件是否为普通文件
-c:判断文件是否为字符型特殊型文件
-b:判断文件是否为块设备文件
-nt:表示文件1是否比文件2新
-ot:表示文件1是否比文件2旧
后创建出来的是新一点的
2.3 字符串比较:
操作符 | 说明 | 示例 |
== | 判断两个字符串是否相等 | [ “$a” == “$b” ] |
!= | 判断两个字符串是否不相等 | [ “$a” != “$b” ] |
-z 字符串 | 判断字符串是否为空 | [ -z “$a” ] |
-n 字符串 | 判断字符串是否不为空 | [ -n “$a” ] |
str1 > str2 | 判断字符串str1是否大于str2 | [ “str1” \> “str2” ] |
str1 < str2 | 判断字符串str1是否小于str2 | [ “str1” \< “str2” ] |
注意:对于进行字符串的测试,一定要将字符串加上双引号然后在进行比较,一定要注意空格,一般在 [ ] 里面使用
在 [ ] 判断中空格也算字符串
2.4 逻辑操作符:
-a就是与&&一样,或者说是等多个条件同时满足的时候才可以
-o就是||或的意识,多个条件用-o的时候表示满足其中的一个条件即可
!表示相反的意思
3、流程控制语句if:
在shell中或者在其他的语言中if这种控制语句都是很长用的只是不同的语言用法不太一样而且,但是大致的意思是一样的
if分为,单分支,双分支和多分枝
-
3.1单分支:
单分支的最为简单,就只是判断符合条件后执行什么,不符合就什么也不用做
语句:
if [ 判断条件 ] ;then
命令
fi
注意要使用fi关闭这判断的流程,;表示换行,如果then在下一行编写就不用加入“;”了
例如一个简单的判读文件是否存在,不存在就创建
还可以用来判断我们磁盘的使用情况是否大于某个值,先要加个您需要的值拿到,比如查看根磁盘的使用情况
这样在将这个命令写到shell脚本中,并将这个值放到变量中在进行比较
上图可以看到讲判断的值改为大于或等于5就进行输出了
可以讲这个写入到计划任务中,这样即可一定时的检查磁盘的使用情况了,然后在根据情况进行后面的磁盘清理
-
3.2 双分支:
双分支也好理解,可以理解为如果执行什么,否则执行什么
语句:
if [ ] ;then
echo 条件成功后执行的命令任务
else
echo 否则条件不成功后执行什么
fi
例如:按照上面的在加入一下else就可以
-
3.3 多分枝:
可以进行多次判断进行操作,可以结合read命令使用,当然前面的也都可以与read命令结合使用
语句:
if [ ] ;then
echo "执行命令1"
elif [ ] ;then
echo "或者执行命令2"
elif [ ] ;then
echo "或者执行命令3"
else
echo "否则执行什么命令4"
fi
例如:判断文件是否存在并且有执行权限
判断成绩的优异
4、流程控制语句case
case与if的多分枝类似
语句:
case 变量值 in
"模式1")
执行命令序列1
;;
"模式2")
执行命令序列2
;;
。。。。。。。。依次类推即可
*)
默认命令序列,就是上面的都不满足是执行这个
;;
esac
例如:
注意*不要带有引号了
利用这个就可以写一些启动命令脚本等,帮助查看系统资源的手册,如下
首先我们需要知道查看系统资源的大致的命令
内存:free -h 磁盘:df -h cpu的负载:uptime 网络:ifstat 。。。还有好多,这里只用于举例使用
执行查看
但这个还不是太完善,后面使用while循环后将其完善
服务启动: