码迷,mamicode.com
首页 > 系统相关 > 详细

shell - 流程控制if

时间:2019-08-24 20:28:29      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:流程控制   正则   for   cat   dha   use   判断   系统版本   整数   

流程控制if 字符比较

1. [ "$a" == "$b"]
2. != 不等于
3. -z 字符串长度为零为真
4. -n 字符串长度不为空则为真 [ -n "$a" ]
5. str1>str2
# 多条件对比
a : and 
o : or
[ 1 -lt 2 -a 5 -lt 10];echo $?
# 正则对比会使用 [[]]
&& 且
|| 或
[[ 1 -lt 5 || 5 -gt 10 ]];echo $?

例: 判断学生优劣
1-59 补考
60-80 及格
80-100 优秀
read -p "输入分数" grade
if [ $grade -lt 60 ];then
    pass 
elif [ $grade -ge 80 ];then
    pass
elif [ $grade -ge 60 ];then
    pass
else 
    pass

if [ $grade -gt 0 a $grade -lt 60];then
    pass
# 正则匹配
 [[ "$USER" =~ ^r ]]
 判断变量是不是全都是数字 
[[ "$num"=~ ^[0-9]+$ ]]

例: 批量创建用户, 输入创建用户的前缀以及后缀 aaa 123

read -p "前缀:" qz
read -p "后缀" hz
if [[ ! $qz=~^[a-z]+$ ]];then
if [[ #hz =~ ^[0-9]+$ ]];then
    user = ${qz}${hz}
    id $user &>/dev/null
    if [ $? -eq 0];then
        echo "已存在"    

例 : root 用户清空/var/log/message 日志,并每次执行保留最近100行

# 切换用户 su - octivia123
# $0 可以取到脚本的名字
#!/usr/bin/bash

# 判断root
if [ $USER == "root" ] && [ $UID -eq 0 ] ;then
        # 文件必须存在
        if [ -f /var/log/messages ];then
                # 保留最近100行
                tail -100 /var/log/messages > /var/log/messages/bak
                cat /var/log/messages.bak > /var/log/messages
        else
                echo "file do not exist"
else
        echo "do not have the right to execute file $0 "
fi

判断httpd服务是否正常启动,文件名必须是httpd_daemon.sh

# 手动判断服务是否正常
ps aux  netstat -lntp  lsof  systemctl  telnet  namp  
# ps aux|grep httpd|grep -v grep
#!/usr/bin/bash

# 判断服务是否正常启动
ssh_status=$(systemctl status sshd|awk '/^.*Active/ {print $2}')
ssh_status=$(systemctl status sshd|awk '/^.*Active/ {print $2}')
if [ "$ssh_status" == "active" ];then

        echo "is active"
fi

# 判断端口是否存在
netstat -lntp|grep "sshd" &>/dev/null

if [ $? -eq 0 ];then
        sleep 1
        echo "is alive"
else
        echo "is dead"
fi

# 判断进程是否存在
ps aux|grep sshd|grep -v|grep -v "pts"
if [ $? -eq 0 ];then
        echo "exist"
else
        echo "do not exist"
fi

根据不同的系统装yum 源

# cat /etc/redhat-release 可以查看系统版本
tt=$(awk '{print $(NF-1)}' /etc/redhat-release)
echo ${tt%%.*}

#!/usr/bin/bash

tt=$(awk '{print $(NF-1)}' /etc/redhat-release)

if [ ${tt%%.*} -eq "7" ];then
        #配置仓库
        mkdir -p /etc/yum.repos.d/backup
        mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
        cat >/etc/yum.repos.d/base.repo<<-EOF
        [base]
        name=Local Base Yum Source
        baseurl=ftp://192.168.56.1/base/7/x86_64
        enable=1
        gpgcheck=0
        EOF
        echo "7配好了"

elif [ ${tt%%.*} -eq "6" ];then
        # 配置仓库
        echo " 6配好了"
fi

安装不同版本的PHP

cat <<-EOF
1. Installed PHP 5.5
2. Installed PHP 6.6
3. Installed PHP 7.7
EOF

read -p " 请选择 [1|2|3|q]:" install
# 判断输入的必须是整数
if [[ ! $install =~ ^[1-4]$ ]];then
        echo "输入错误"
        exit
fi
if [ $install -eq 1 ];then
        echo " php5.5"
elif [ $install -eq 2 ];then
        echo "php6.6"
elif [ $install -eq 3 ];then
        echo "php7.7"
elif [ $install == 'q' ];then
        exit
fi

备份Mysql 中的所有数据库,每一个库一个.sql文件,排除没用的

# mysql -hlocalhost -uroot -p123 -e "show databases;"
排除一些库 _schema, test, mysql
|sed 1d|grep -v ".*_schema"
|sde 1d|grep -Ev ".*_schema|test|mysql"
拼接mysqldump 语句
|sed -r 's#(.*)#mysqldump -uroot -p -B \1 >1.sql#g'
# 方式二, 循环

#!/usr/bin/bash

dd=$(mysql -uroot -p -e "show databases;"|sed 1d|grep -Ev ".*_schema|test|mysql")

for i in $db
do 
        #用mysqldump
        mysqldump -uroot -p -B $i > /backup/${i}_$(date +%F).sql
done

shell - 流程控制if

标签:流程控制   正则   for   cat   dha   use   判断   系统版本   整数   

原文地址:https://www.cnblogs.com/Afrafre/p/11405715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!