shell - 流程控制if

流程控制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

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

时间: 2024-10-15 15:03:46

shell - 流程控制if的相关文章

linux shell 流程控制

linux shell 流程控制 导读 和Java.PHP等语言不一样,linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法. 一.shell条件语句(if用法) if语句结构[if/then/elif/else/fi] if 条件测试语句 then action [elif 条件 action else action ] fi shell命令,可以按照分号分割,也可以按照换行符分

Linux shell 流程控制(条件if,循环for,while)

Linux shell 流程控制(条件if,循环[for,while],选择[case]语句实例 linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使用方法. 一.shell条件语句(if用法) if语句结构[if/then/elif/else/fi] if 条件测试语句 then action [elif 条件 action else action ] fi 如果对于:条件测试语句不是

Shell 流程控制

Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { search(q); } else { // 不做任何事情 } 在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else. 写成一行(适用于终端命令提示符): if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo &q

Shell流程控制

防伪码:床前明月光,疑是地上霜. 流程控制是改变程序运行顺序的指令. f 4.1 if  语句 格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi 4.1.1 单分支 if 条件表达式; then 命令 fi 示例: #!/bin/bash N=10 if [ $N -gt 5 ]; then echo yes fi # bash test.sh yes 4.1.2 双分支 if 条件表达式; then 命

第四章 Shell流程控制

流程控制是改变程序运行顺序的指令. 4.1 if语句 4.1.1 单分支 if 条件表达式; then     命令 fi 示例: #!/bin/bash N=10 if [ $N -gt 5 ]; then     echo yes fi # bash test.sh yes 4.1.2 双分支 if 条件表达式; then     命令 else     命令 fi 示例: #!/bin/bash N=10 if [ $N -lt 5 ]; then     echo yes else   

Bash Shell 流程控制 —— select

前言 今天刚好写了一个自动化打包脚本,再次使用到了bash shell,好幸福的感觉.这里主要是想介绍一下select命令,这个命令可以帮助我们完成菜单选择功能. 格式 我今天也是第一次使用select流程控制,在php.Java.C这些语言中并没有实现select功能.Bash Shell中,select格式如下: select $var in ${list[@]} do statements that can use $var done 在select执行时,会根据list数组给出选择菜单,

shell--8、Shell 流程控制

和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) {     search(q); } else {     // 不做任何事情 } 在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else. if else if if 语句语法格式: if condition then     command1      command2    ...     comma

linux shell学习之shell流程控制

在linux shell编程中,流程控制结构与语句,也算是shell脚本中的重点了,不了解的朋友,跟随脚本小编一起来学习下吧. linux控制流结构学习. 一,shell控制流结构 1.控制结构   6.while循环 2.if then else语句 7.until循环 3.case 语句  8.break控制 5.for循环    9.continue控制 1,if then else  if 条件1 如果条件1为真  then 那么  命令1 执行命令1  elif 条件2 如果条件1不成

Linux Shell——流程控制

一. 创建交互式脚本 使用 echo命令的选项 关于各种命令的使用,可以使用man 命令来查看命令的详细用法介绍.例如,我想看下 echo 的用法和各种选项.可以执行 man echo.执行结果如下: 如果单独执行 echo 命令,就会打印出一个空白行.默认情况下,echo 都会换行,如果不想换行的话,可以使用下面两种方式的一种. echo -n "Which directory do you want to use? " echo -e "Which directory d