• OS + Linux Shell Programme / 100 cases


    s

    菜鸟教程在线编辑器

    https://www.runoob.com/try/runcode.php?filename=helloworld&type=bash

    shell脚本100例 + Shell脚本编程实战100例 中文pdf版

    https://www.jb51.net/books/723839.html#downintro2

    https://dqunying2.jb51.net/202005/books/shellscript_jb51.rar

    案例1 ,编写helloworld脚本

    #!/bin/bash
    echo "hello world"

    案例2,通过位置变量创建 Linux 系统账户及密码

    https://www.cnblogs.com/Zrecret/p/12160219.html
    [root@ localhost ~]# vim useradd.sh #!/bin/bash #$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数 useradd "$1" echo "$2" | passwd --stdin "$1" #执行脚本 [root@ localhost ~]# ./useradd.sh tom 123 Changing password for user tom. passwd: all authentication tokens updated successfully.

    案例3,每周 5 使用 tar 命令备份/var/log 下的所有日志文件

    #vim   /root/logbak.sh
    #编写备份脚本,备份后的文件名包含日期标签,防止后面的备份将前面的备份数据覆盖
    #注意 date 命令需要使用反引号括起来,反引号在键盘<tab>键上面
    tar   -czf   log-`date +%Y%m%d`.tar.gz   /var/log
    # ======在输入crontab -e进入定时器编辑定时任务========================
    # crontab
    -e #编写计划任务,执行备份脚本 00 03 * * 5 /root/logbak.sh

    案例4,一键部署LNMP(RPM版本)

    #!/bin/bash
    #使用 yum 安装部署 LNMP,需要提前配置好 yum 源,否则该脚本会失败
    #本脚本使用于 centos7.2 或 RHEL7.2
    yum -y install httpd
    yum -y install mariadb mariadb-devel mariadb-server
    yum -y install php   php-mysql
    systemctl start httpd
    systemctl start mariadb
    systemctl enable httpd
    systemctl enable mariadb

    案例5, 实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M 时,发送报警邮件给root 管理员.

    #!/bin/bash
    #提取根分区剩余空间
    disk_size=$(df -h / | awk '/\//{print $4}')
    #提取内存剩余空间
    disk_size=$(df -h / | awk '/\//{print $4}')
    while :
    do
    #注意内存和磁盘提取的空间大小都是以 Kb 为单位
         if[ $disk_size -le 512000 -a $mem_size -le 1024000 ];then
             mail -s Warning root <<EOF
             Insufficient resources,资源不足
             EOF
         fi
    done

    #!/bin/bash
    disk_size=$(df / | awk '/\//{print $4}')
    men_size=$(free | awk '/Mem/{print $4}')
    myemail='admin@qq.com'
    while true
    do
            if [ $disk_size -le 512000 -a $men_size -le 1024000 ]; then
                    echo "空间不足!!" | mutt-s "空间不足!!" $myemail
            else
                    echo "一切正常!!"
            fi
    done

    shell下RANDOM的用法

    http://blog.sina.com.cn/s/blog_88f05dbd0102wzhq.html
    RANDOM是一个环境变量,默认情况下,可以随机生成一个0-32767的数,用法如下:

    [root@sftssitapp510 ~]# echo $RANDOM

    8531

    #生成0-20之间的随机数

    [root@sftssitapp510 ~]# echo $((RANDOM%20))

    #生成12-30之间的数
    [root@sftssitapp510 ~]# echo $((RANDOM%18+12))​

    shell 之 EQ,NE,GT,LT,GE,LE 含义

    https://www.cnblogs.com/dw-date/p/13695143.html

    EQ 就是 EQUAL等于
    NE就是 NOT EQUAL不等于
    GT 就是 GREATER THAN大于
    LT 就是 LESS THAN小于
    GE 就是 GREATER THAN OR EQUAL 大于等于
    LE 就是 LESS THAN OR EQUAL 小于等于

    shell-case多条件判断语句

    https://www.cnblogs.com/hxlinux/p/12939961.html

      case 变量名 in        #对变量进行判断
      变量值1)           #当变量名的值是变量值1时,依次输出命令1,命令2
            命令1
            命令2
            命令n;;
      变量值2)
            命令1
            命令2
            命令n;;
      变量值3)
            命令1
            ....
            命令n;;
      esac            #结束标记

    ==

          #!/bin/bash
          echo '输入用户名:(例如老王)'
          read user
          echo
          case $user in
                  zhangsan)
                          echo -e "姓名:张三\n外号:法外狂徒\n年龄:十七\n擅长:无恶不作,无中生有,无语无语,无可救药\n职业:刑法演示家";;
                  laowang)
                          echo -e "姓名:老王,\n外号:寡妇终结者,中国好邻居\n擅长:辣手摧黄花做绿帽使者\n职业:人体构造学工程师";;
                  *)
                          echo "暂无收录"
          esac

      

    shell脚本游戏之:剪刀石头布

    https://blog.51cto.com/oldpan/1968398

    #!/bin/bash
    # 计算机定义0~2的取值变量,代表石头、剪刀、布
    num=$[RANDOM%3]
    #game=(石头 剪刀 布)
    #computer=${game[$num]}
    #计算机出拳的可能性保存在一个数组中,game[0],game[1],game[2]分别是3种不同的可能,代表石头、剪刀、布
    
    echo "请根据下列提示选择您的出拳手势"
    echo "玩家人定义:1.石头"
    echo "玩家人定义:2.剪刀"
    echo "玩家人定义:3.布"
    echo "=============================="
    echo "计算机定义:0.石头" echo "计算机定义:1.剪刀" echo "计算机定义:2.布" echo "==============================" read -p "玩家选择:请输入1-3数值:" person #提示用户出拳,根据提示出拳即可 #再通过case语句判断用户输入的值是1还是2还是3,根据不同的输入判断不同的结果 #echo "计算机出:$computer" case $person in 1) if [ $num -eq 0 ];then echo "打印计算机出拳 $num , 平局" elif [ $num -eq 1 ];then echo "打印计算机出拳 $num ,你赢" else echo "打印计算机出拳 $num,计算机赢" fi;; 2) if [ $num -eq 0 ];then echo "计算机赢" elif [ $num -eq 1 ];then echo "平局" else echo "你赢" fi;; 3) if [ $num -eq 0 ];then echo "你赢" elif [ $num -eq 1 ];then echo "计算机赢" else echo "平局" fi;; *) echo "请输入数值:1,2,3" esac

     方法二,定义了两个变量,一个是机器出的定义了y, 用户的定义为了x,然后做出三种判断

    https://blog.51cto.com/u_13589092/2066024

    #!/bin/bash
    num=$[RANDOM%3+1]
    case $num in
    1) 
    y=“石头”;;
    2)
    y=“剪刀”;;
    3)
    y=“布”;;
    esac
    
    read -p “请输入石头、剪刀、布 :” x
    echo “机器出的是 : $y”
    echo “你 出的 是 : $x”
    if [ $x == $y ];then
    echo “平手”
    elif [[ $x == “石头” && $y == “剪刀” ]] ||
    [[ $x == “剪刀” && $y == “布” ]] ||
    [[ $x == “布” && $y == “石头” ]];then
    echo “你赢了”
    else
    echo “你输了”
    fi

    shell 石头剪刀布

    https://www.cnblogs.com/loganSxb/p/11079034.html

    https://www.cnblogs.com/MR-ws/p/11084774.html

    我们来做一个小游戏: 石头剪刀布

    首先我们规定一下规则:

    1.用户输入一个代表石头剪刀布的数值,与电脑随机生成的数值比较

    2.只有用户赢了才能退出游戏

    复制代码
      1 #!/bin/bash
      2 
      3 arryas=(剪刀 石头 布)
      4 while true
      5 do
      6 num=$(($RANDOM%3))
      7 
      8 
      9 read -p "输入编号: 0.剪刀 1.石头 2.布" username
     10 
     11 echo -e "你出的${arryas[$username]} VS 电脑出的${arryas[$num]}\n"
     12 
     13 dd=$(($username-$num))
     14 if [ $dd -eq 1 -o $dd -eq -2 ]
     15 then
     16         echo "你赢了"
     17         exit
     18 elif [ $dd -eq 0 ]
     19 then
     20         echo "平局"
     21 else
     22         echo "你输了"
     23 fi
     24 done
    复制代码

    测试:

    复制代码
    [root@logan day4]# bash sjb.sh
    输入编号: 0.剪刀 1.石头 2.布1
    你出的石头 VS 电脑出的布
    
    你输了
    输入编号: 0.剪刀 1.石头 2.布2
    你出的布 VS 电脑出的布
    
    平局
    输入编号: 0.剪刀 1.石头 2.布1
    你出的石头 VS 电脑出的石头
    
    平局
    输入编号: 0.剪刀 1.石头 2.布0
    你出的剪刀 VS 电脑出的布
    
    你赢了
    [root@logan day4]# 
    复制代码

    完成

    end

    [root@ localhost ~]# vim useradd.sh
    
    #!/bin/bash
    #$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数
    useradd "$1"
    echo "$2" | passwd --stdin "$1"
    
    #执行脚本
    [root@ localhost ~]# ./useradd.sh tom 123
    Changing password for user tom.
    passwd: all authentication tokens updated successfully.

    实时监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M 时,发送报警邮件给root 管理员.

  • 相关阅读:
    linux 查找命令(whatis,free,df,top)
    linux shell sed命令
    linux yum命令
    linux知识点 ROM,RAM,SRAM,DRAM,Flash
    二叉树遍历理解
    linux mv命令
    破窑赋
    关于fdisk l
    liunx知识点umask
    linux which命令
  • 原文地址:https://www.cnblogs.com/lindows/p/15648861.html
Copyright © 2020-2023  润新知