小破站学习笔记
基本语法结构
if结构
if [ 判断条件 ];then条件为真 执行语句commandfi[ 判断条件 ] && command
if…else结构
if [ 判断条件 ];then条件为真 执行语句commandelse条件为假 执行语句command2fi[ 判断条件 ] && command || command2
if…elif…else结构
if [ 判断条件1 ];then条件为真 执行语句command1elif [ 判断条件2 ];then条件为真 执行语句command2else条件为假 执行语句command3fi##先判断第一个条件是否满足,满足执行后面命令结束,如果不满足,则继续判断第二个条件是否满足,同理,如果都不满足,则最后执行else的语句##可以有多个elif
多层嵌套
if [ 判断条件1 ];then条件为真 执行语句command1if [ 判断条件2 ];then条件为真 执行语句command2fielseif [ 判断条件3 ];then条件为真 执行语句command3elif [ 判断条件4 ];then条件为真 执行语句command4else条件为假 执行语句command5fi
就是对上面的语句进行嵌套
应用案例
判断2台主句是否ping打的通
#!/bin/bashping -c 3 192.168.0.1 > /dev/null && ping -c 3 192.168.0.2 > /dev/nullif [ $? -eq 0 ];thenecho \"ok\"elseecho \"not ok\"fi#通过ping的$?值来判断是否正常
判断httpd是否存在进程
#!/bin/bash#ps -ef | greo httpd | grep -v \'grep\'#$?pgrep httpd > /dev/null#查找进程的id pgrep#$?if [ $? -eq 0 ];thenecho \"ok\"elseecho \"not ok\"fi#通过pgrep的$?值来判断是否存在或者test $? -eq 0 && echo \"ok\" || echo \"not ok\"
判断门户网站是否正常访问
#!/bin/bashwget /zss/ Shell/www.baidu.com &> /dev/nullif [ $? -eq 0 ];thenecho \"ok\"rm /zss/index*elseecho \"not ok\"fi或test $? -eq 0 && echo \"ok\" || echo \"not ok\"#Linux 访问web 返回状态码 200#可以通过wget 下载 判断$?#curl#elinks -dump
判断用户是否存在
#!/bin/bashread -p \"请输入要判断的用户名:\"usernameid $username &> /dev/nullif [ $? -eq 0 ];thenecho \"ok\"elseecho \"not ok\"fi#判断用户是否存在#id user#grep -w admin /etc/passwd#精确匹配#根据$?
grep -w admin /etc/passwd
#精确匹配admin
总结
变量定义
基本定义
变量名=变量值
交互式定义
read -p \"提示信息\"变量名
定义有类型的变量
declare -i/x 变量名=变量值
条件判断
语法结构
test 表达式[ 表达式 ][[ 表达式 ]]
判断什么
整数判断-eq 相等-ne 不等-gt 大于-lt 小于-ge 大于等于-le 小于等于
文件类型
-e 判断文件是否存在(任何类型文件)-f 判断文件是否存在并且是一个普通文件-d 判断文件是否存在并且是一个目录-L 判断文件是否存在并且是一个软链接文件-b 判断文件是否存在并且是一个块设备文件-S 判断文件是否存在并且是一个套接字文件-c 判断文件是否存在并且是一个字符设备文件-p 判断文件是否存在并且是一个命名管道文件-s 判断文件是否存在并且是一个非空文件(有内容)
字符串
-z 判断是否为空字符串,字符串长度为0则成立-n 判断是否为非空字符串,字符串长度不为0则成立string1 = string2 判断字符串是否相等string1 != string2 判断字符串是否不相等
文件新旧(修改时间)
文件权限
流程控制语句
if 结构if...else结构if...elif...else...结构层层嵌套