• shell脚本


    目录

    一、test命令

    二、比较数值

    三、字符串比较

    四、短路与短路或

    五、()和{}

    六、if语句

    1.分支结构

    七、脚本小测试

    1.测试1检测当前用户是否为管理员

    2.测试2检测与真机是否网络通畅

    3.测试3检测输入的成绩评分

    4.测试4检测httpd服务

    5.测试5创建用户

    6.测试6安装nginx

    八、case语句

    总结:本章主要介绍了shell的部分基础知识和部分小脚本


    一、test命令

    1.作用:测试文件的表达式是否成立

    2.选项

    -e 测试文件和目录是否存在

    -f 测试是否为文件

    -r 测试当前用户是否有读取权限

    -w 测试当前用户是否有写的权限

    -x 测试当前用户是否有执行的权限

    test和[]作用相同

    使用[]内部两边需要有空格

    linux中使用判断

    1.test

    2.[]

    3.[[]] 加强版的单个[]可以使用正则表达式和通配符(匹配字符串)如果使用[[]]判断是否相等用[[ == ]]

    二、比较数值

    1.公式:[ 整数1 -操作符 整数2 ]

    2.选项

    -eq :第一个数等于第二个数

    -ne :第一个数不等于第二个数

    -gt :第一个数大于第二个数

    -lt :第一个数小于第二个数

    -ge :第一个数大于等于第二个数

    -le :第一个数小于等于第二个数

    三、字符串比较

    = 字符串内容相同

    != 字符串内容不相同

    -z 字符串内容为空

    -n 字符是否存在

    四、短路与短路或

    1.短路与

    全真才为真一假即假

    cmd1 && cmd2  cmd1和cmd2都为真才为真

    cmd1或cmd2有一个假就全部为假

    如果第一个为假 ,整个 就为假 不用执行下个操作

    2.短路或

    全假为假一真为真

    cmd1 || cmd2  cmd1和cmd2有一个为真就是真

    cmd1和cmd2全假才为假

    如果第一个 为真 那么 不用执行第二个操作

    常见条件

    -a或&&:逻辑与,“而且”的意思全真才为真

    -o或||:逻辑或,“或者”的意思一真即为真

    !:逻辑否

    五、()和{}

    (CMD1;CMD2;...)和 { CMD1;CMD2;...; } 都可以将多个命令组合在一起,批量执行

    ( cd /opt;ls ) 切换目录并查看

    pwd 查看当前路径

    { cd /opt;ls; }

    pwd

    六、if语句

    1.分支结构

    1.单分支

    if 判断条件;

    then  

    条件为真的分支代码

    fi

    2.双分支

    if 判断条件;

    then  

    条件为真的分支代码

    else  

    条件为假的分支代码

    fi

    3.多分支

    if 判断条件1
    then
     条件1为真的分支代码

    elif 判断条件2
    then
     条件2为真的分支代码

    elif 判断条件3;then
     条件3为真的分支代码

    ...
    else
     以上条件都为假的分支代码  托底

    fi

    七、脚本小测试

    1.测试1检测当前用户是否为管理员
    1. #!/bin/bash
    2. if [ "$USER" != "root" ]
    3. then
    4.         echo "非管理员用户无权限操作"
    5. else
    6. echo "是管理员用户"
    7. fi

    2.测试2检测与真机是否网络通畅
    1. #!/bin/bash
    2. ping -c 3 192.168.91.1
    3. if
    4.         [ $? = 0 ]
    5. then
    6.         echo "与真机网络通顺"
    7.         exit 1
    8. fi
    9.         echo "与真机网络不通"

    3.测试3检测输入的成绩评分
    1. #!/bin/bash
    2. read -p "请输入你的成绩:" b
    3. if [ $b -ge 90 -a $b -le 100 ]
    4. then
    5. echo "优秀"
    6. elif [ $b -ge 70 -a $b -lt 90 ]
    7. then
    8. echo "良好"
    9. elif [ $b -eq 60 ]
    10. then
    11. echo "及格"
    12. elif [ $b -lt 60 ]
    13. then
    14. echo "不及格"
    15. else
    16. bash $0
    17. fi


    4.测试4检测httpd服务
    1. #!/bin/bash
    2. ss -natp |grep 80
    3. if [ $? -eq 0 ]
    4. then
    5. echo "http服务已开启"
    6. else
    7. systemctl start httpd &>/dev/null
    8. ss -natp |grep 80
    9. if [ $? -eq 0 ]
    10. then
    11. echo "http服务已开启"
    12. else
    13. echo "http服务开启失败"
    14. fi
    15. fi


    5.测试5创建用户
    1. #!/bin/bash
    2. read -p "请输入你要新建的用户:" name
    3. read -p "请输入你要密码:" mima
    4. grep $name /etc/passwd &>/dev/null
    5. if [ $? -eq 0 ]
    6. then
    7. echo "用户名重复了"
    8. else
    9. useradd $name
    10. echo "$mima" |passwd --stdin $name
    11. echo "创建成功"
    12. fi


    6.测试6安装nginx
    1. #!/bin/bash
    2. wget http://nginx.org/download/nginx-1.18.0.tar.gz -P /opt
    3. if [ $? -eq 0 ]
    4. then
    5. echo "下载成功"
    6. else
    7. echo "下载失败"
    8. fi
    9. cd /opt
    10. tar xf nginx-1.18.0.tar.gz
    11. cd nginx-1.18.0
    12. ./configure --prefix=/apps/nginx
    13. if [ $? -eq 0 ]
    14. then
    15. echo "环境检查成功"
    16. else
    17. echo "环境检查失败"
    18. fi
    19. make -j2 && make install
    20. if [ $? -eq 0 ]
    21. then
    22. echo "编译成功"
    23. else
    24. echo "编译失败"
    25. then
    26. echo "编译成功"
    27. else
    28. echo "编译失败"
    29. fi
    30. ln -s /apps/nginx/sbin/* /usr/bin
    31. echo "
    32. [Unit]
    33. Description=nginx - high performance web server
    34. Documentation=http://nginx.org/en/docs/
    35. After=network-online.target remote-fs.target nss-lookup.target
    36. Wants=network-online.target
    37. [Service]
    38. Type=forking
    39. PIDFile=/apps/nginx/logs/nginx.pid
    40. ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
    41. ExecReload=/bin/kill -s HUP $MAINPID
    42. ExecStop=/bin/kill -s TERM $MAINPID
    43. LimitNOFILE=100000
    44. [Install]
    45. WantedBy=multi-user.target
    46. " > /usr/lib/systemd/system/nginx.service
    47. systemctl start nginx
    48. if [ $? -eq 0 ]
    49. then
    50. echo "启动成功"
    51. else
    52. echo "启动失败"
    53. fi


    八、case语句

    case 多分支结构

    case 变量值 in 模式1

    命令序列1)

    ;;

    模式2

    命令序列2

    ;;

    ...

    *)

    默认命令序列

    esac

    1.case检测成绩

    1. #!/bin/bash
    2. read -p "请输入你的分数" score
    3. case $score in
    4. 100)
    5. echo "$score 优秀"
    6. ;;
    7. [89][0-9])
    8. echo "$score 良好"
    9. ;;
    10. [67][0-9])
    11. echo "$score 及格"
    12. ;;
    13. [0-9]|[1-5][0-9])
    14. echo "$score 不及格"
    15. ;;
    16. *)
    17. echo "输入有误"
    18. esac

    2.小游戏脚本

    1. #!/bin/bash
    2. m=`echo $[RANDOM%3+1]`
    3. read -p "请输入 1.石头2.剪刀3.布:" h
    4. if [ $m -eq $h ]
    5. then
    6. echo "打成平局"
    7. bash $0
    8. elif [ $h -eq 1 -a $m -eq 2 -o $h -eq 2 -a $m -eq 3 -o $h -eq 3 -a $m -eq 1 ]
    9. then
    10. echo "人类胜利"
    11. else
    12. echo "机器胜利"
    13. fi

    3.小型菜单

    1. cat <<EOF
    2. 1.查看读写
    3. 2.查看磁盘
    4. 3.查看内存
    5. EOF
    6. read -p "请输入数字(1-3):" num
    7. case $num in
    8. 1)
    9. vmstat $web1
    10. ;;
    11. 2)
    12. lsblk -f $mysql
    13. ;;
    14. 3)
    15. free -h $doker
    16. ;;
    17. esac

    总结:本章主要介绍了shell的部分基础知识和部分小脚本

  • 相关阅读:
    Numpy入门[19]——结构化数组与记录数组
    BFS专题9 中国象棋-马-有障碍
    RHCSA认证考试---4.创建用户
    pdf生成:puppeteer
    程序员工作压力大,年轻人放弃互联网了?
    Linux应用程序对异步通知的处理
    QFramework v1.0 使用指南 工具篇:09. SingletonKit 单例模板套件
    EasyGBS如何解决大屏播放时出现数据未推送情况?
    C++ 函数对象(Function Object)是什么?C++重载小括号()是什么作用?
    如何熟练掌握计算流体力学 ANSYS FIuent软件
  • 原文地址:https://blog.csdn.net/2301_76352247/article/details/134532608