# 1、单分支语法格式 if 判断 ;then 命令 命令 fi # 2、双分支语法格式 if 判断 ;then 命令1 else 命令2 fi # 3、多分支语法格式 if 判断;then 命令1 elif 判断 ;then 命令2 else 命令3 fi # 示例 #!/bin/bash if [ $USER == tarena ];then echo "Yes,You are Tarena." else echo "You are other man." fi
# 语法格式 for 变量 in 值序列 do 命令 done # 示例 for i in 1 2 3 4 5 do echo "hello world" done
练习:判断指定网段的IP地址哪些可以用,哪些不能用?
1 2 3 4 5 6 7 8 9 10 11 12 13
#!/bin/bash
for i in {1..254} do # /dev/null为黑洞,不想要的输出放到里面 ping -c 2 172.40.91.$i &>/dev/null # $?是返回上一条命令的执行状态 if [ $? -eq 0 ];then echo "172.40.91.$i is up." else echo "172.40.91.$i is down" fi done
shell - while循环
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# 语法格式 while 条件判断 do 命令 done
# 示例 #!/bin/bash i=1 while [ $i -lt 5 ] do echo baby let i++ done
while补充
1 2 3 4 5 6 7 8 9 10 11
1、死循环 while : do 循环体 done
2、vim批量缩进 显示行号: set nu 命令行模式下输入: 1,3> 敲Enter - 向右缩进 3,8< 敲Enter - 向左缩进
shell - case分支结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# 1、特点 根据变量值的不同,执行不同的操作
# 2、语法格式 case $变量名 in 模式1) 代码块 ;; 模式2) 代码块 ;; *) 代码块 ;; esac
while : do sleep 2 count=`mysqladmin -u"$user" -p"$passwd" status | awk '{print $4}'` echo "`date %F` 并发连接数为:$count" done
2、根据md5校验码,检测文件是否被修改
1 2
# 1、生成md5的文件校验码 md5sum nginx.conf
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#!/bin/bash #本示例脚本检测的是/etc 目录下所有的conf结尾的文件 #本脚本在目标数据没有被修改时执行一次,当怀疑数据被人篡改,再执行一次 #将两次执行的结果做对比,MD5码发生改变的文件,就是被人篡改的文件 for i in $(ls /etc/*.conf) do md5sum "$i" >> /home/tarena/md5log.txt done
key="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" num=${#key} #设置初始密码为空 pass='' #循环8次,生成 8为随机密码 #每次都是随机数对密码库的长度取余,确保提取的密码字符不超过密码库的长度 #每次循环提取一位随机密码,并将该随机密码追加到pass变量的最后 for i in {1..8} do index=$[RANDOM%num] pass=$pass${key:$index:1} done echo $pass