精华内容
下载资源
问答
  • shell脚本案例

    2020-07-27 10:14:29
    shell脚本案例1、根据用户输入创建数组,并自动将元素按照从小到大的顺序排列2、创建九九乘法表 1、根据用户输入创建数组,并自动将元素按照从小到大的顺序排列 [root@server opt]# vim shuzu.sh #!/bin/bash #将...

    1、根据用户输入创建数组,并自动将元素按照从小到大的顺序排列

    [root@server opt]# vim shuzu.sh
    
    #!/bin/bash
    #将数组中的元素从小到大排列,采用冒泡排序
    k=0
    while true
    do
      read -p "是否加入元素(yes/no)"  doing
      if [ $doing == "no" ];then
        break
      fi
      read -p "请输入第$[$k+1]个元素"  key
      arr[$k]=$key
      let k++
    done
    for ((i=1;i<${#arr[*]};i++)) #外出循环N-1次,N表示数组的长度#
    do
      for ((j=0;j<${#arr[*]}-$i;j++))  #内层循环N-i次#
      do
        if [  ${arr[$j]} -gt ${arr[$j+1]}  ];then
          t=${arr[$j]}
          arr[$j]=${arr[$j+1]}
          arr[$j+1]=$t
        fi
      done
    done
    echo ${arr[*]}
    [root@server opt]# bash shuzu.sh
    是否加入元素(yes/no)yes
    请输入第1个元素23
    是否加入元素(yes/no)yes
    请输入第2个元素12
    是否加入元素(yes/no)yes
    请输入第3个元素10
    是否加入元素(yes/no)yes
    请输入第4个元素6
    是否加入元素(yes/no)yes
    请输入第5个元素45
    是否加入元素(yes/no)no
    6 10 12 23 45
    
    

    2、创建九九乘法表

    ##方法一
    [root@server opt]# vim jiujiu.sh
    #!/bin/bash
    for ((i=1;i<=9;i++))
    do
      for ((j=1;j<=i;j++))
      do
        printf "%-8s"  $i*$j=$(($i*$j))
      done
      echo 
    done
    [root@server opt]# bash jiujiu.sh
    1*1=1   
    2*1=2   2*2=4   
    3*1=3   3*2=6   3*3=9   
    4*1=4   4*2=8   4*3=12  4*4=16  
    5*1=5   5*2=10  5*3=15  5*4=20  5*5=25  
    6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
    7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
    8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
    9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  
    
    
    ##方法二
    [root@server opt]# vim jiujiu2.sh 
    #!/bin/bash
    for i in `seq 9`
    do
      for j in `seq $i`
      do
        echo -ne "$i*$j=$[$i*$j] \t"
      done
      echo
    done
    [root@server opt]# bash jiujiu2.sh 
    1*1=1 	
    2*1=2 	2*2=4 	
    3*1=3 	3*2=6 	3*3=9 	
    4*1=4 	4*2=8 	4*3=12 	4*4=16 	
    5*1=5 	5*2=10 	5*3=15 	5*4=20 	5*5=25 	
    6*1=6 	6*2=12 	6*3=18 	6*4=24 	6*5=30 	6*6=36 	
    7*1=7 	7*2=14 	7*3=21 	7*4=28 	7*5=35 	7*6=42 	7*7=49 	
    8*1=8 	8*2=16 	8*3=24 	8*4=32 	8*5=40 	8*6=48 	8*7=56 	8*8=64 	
    9*1=9 	9*2=18 	9*3=27 	9*4=36 	9*5=45 	9*6=54 	9*7=63 	9*8=72 	9*9=81 	
    
    

    3、更改数组中小于60的元素,改为60

    [root@server opt]# vim score2.sh
    #!/bin/bash
    #更改数组中小于60的元素,改为60
    score=(80 70 55 58 90)
    for ((i=0;i<=4;i++))
    do
      if [ ${score[$i]} -lt 60  ];then
        new[$i]=60
      else
        new[$i]=${score[$i]}
      fi
    done
    echo ${new[*]}
    [root@server opt]# bash score2.sh 
    80 70 60 60 90
    

    4、查找数组中最大的元素

    [root@server opt]# vim score.sh
    
    #!/bin/bash
    #查找数组中最大的元素
    arr=(80 90 87 56 78 65 45 78 32 99)
    j=60
    for v in ${arr[*]}
    do
      if [ $v -gt $j ];then
        j=$v
      fi
    done
    echo $j
    [root@server opt]# bash score.sh 
    99
    

    5、求1-100的奇数和

    [root@server opt]# vim sum.sh
    #!/bin /bash
    #1-100的奇数和
    sum=0
    for ((i=1;i<=100;i+=2))
    do
        let sum+=$i
    done
    echo $sum
    [root@server opt]# bash sum.sh 
    2500
    

    6、制作菱形

    [root@server opt]# vim lingxing.sh
    #!/bin/bash
    read -p "请输入菱形宽度:" a
    for ((i=1;i<=$a;i++))
    do
      for ((b=$a;b>$i;b--))
      do
        echo -n " "
      done
      for ((p=1;p<=$i;p++))
      do
        echo -n "* "
      done
      echo "" 
    done
    
    for ((k=$a-1;k>=1;k--))
    do
     for ((m=$a;m>$k;m--))
     do
      echo -n " "
    done
     for ((l=1;l<=$k;l++))
      do
       echo -n "* "
    done
    echo ""
    done
    [root@server opt]# bash lingxing.sh 
    请输入菱形宽度:10
             * 
            * * 
           * * * 
          * * * * 
         * * * * * 
        * * * * * * 
       * * * * * * * 
      * * * * * * * * 
     * * * * * * * * * 
    * * * * * * * * * * 
     * * * * * * * * * 
      * * * * * * * * 
       * * * * * * * 
        * * * * * * 
         * * * * * 
          * * * * 
           * * * 
            * * 
             * 
    
    

    7、人机剪刀、石头、布的游戏

    [root@server opt]# vim guessgame.sh
    #!/bin/bash
    read -p "对战开始,请猜拳(石头/剪刀/布)" guess
    num=$[$RANDOM%3]
    echo "对方:$(grep $num /opt/rules.txt | gawk -F : '{print $2}')"
    person=$(grep $guess /opt/rules.txt | gawk -F : '{print $1}')
    if [ $num -eq $person ];then
      echo "平局"
    elif [ $person -eq 0 -a $num -eq 1 ] || [ $person -eq 1 -a $num -eq 2 ] || [ $person -eq 2 -a $num -eq 0 ];then
      echo "你赢了"
    else
      echo “你输了”
    fi
    [root@server opt]# vim rules.txt
    0:石头
    1:剪刀
    2:布
    [root@server opt]# bash guessgame.sh 
    对战开始,请猜拳(石头/剪刀/布)布
    对方:剪刀
    “你输了”
    
    

    8、创建存放1-100奇数的数组

    [root@server opt]# vim jishu.sh
    #!/bin/bash
    #创建存放1-100奇数的数组
    k=0 #元素
    j=1 #增量
    for ((i=0;i<=99;i++))
    do
      k=$[$i+$j]
      let j++
      #最大元素不能超过100
      if [ $k -le 100 ];then
        arr[$i]=$k
      fi
    done
    echo ${arr[*]}
    [root@server opt]# bash jishu.sh 
    1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
    
    展开全文
  • SHELL脚本案例

    2018-09-19 15:55:39
    SHELL脚本案例: 1.判断两次输入的密码是否一致,一致则输出“OK”,不一致则输出“Error” #!/bin/bash read -p "请输入密码:" pass1 read -p "请再次输入密码:" pass2 if [ $pass1 == $pass...

    SHELL脚本案例:

    1.判断两次输入的密码是否一致,一致则输出“OK”,不一致则输出“Error”

    #!/bin/bash
    read -p "请输入密码:" pass1
    read -p "请再次输入密码:" pass2
    if [ $pass1 == $pass2 ]; then
            echo "OK"
    else
            echo "Error"
    fi
    

    2.输入圆半径后计算圆面积

    #!/bin/bash
    read -p "请输入半径:" r
    echo "圆面积为:"
    `echo "3.14*$r*$r" | bc`
    

    3.自动生成20以内的随机数,用户可进行循化猜数,直至猜中为止,自动退出

    #!/bin/bash
    x=$[RANDOM%20]
    i=0
    while :
    do
            read -p "请猜随机数:" num
            let i++
            `if [ $num -eq $x ]; then`
                    echo "猜对了"
                    echo "你猜了$i次"
                    exit
            elif [ $num -gt $x ]; then
                    echo "猜大了"
            else
                    echo "猜小了"
            fi
    done
    

    4.生成不同颜色的字

    #!/bin/bash
    echo -e "\033[32mtest\033[0m"
    echo -e "\033[33mtest\033[0m"
    echo -e "\033[34mtest\033[0m"
    echo -e "\033[35mtest\033[0m"
    echo -e "\033[36mtest\033[0m"
    echo -e "\033[37mtest\033[0m"
    

    5.打印阵列,输入阵列大小,打印出n*n的阵列

    #!/bin/bash
    read -p "请输入打印个数:" p
    for i in seq $p
    do
            for o in seq $p
            do
                    [ $o -eq 1 ] && continue
                    echo -n "* "
            done
            echo "* "
    done
    

    6.创建账户后为用户自动生成随机密码并通过邮件发送给root用户

    #!/bin/bash
    #自动安装软件包vsftpd
    yum -y install vsftpd
    
    #自动创建一个系统账户tomcat
    useradd tomcat
    
    #在tomcat家目录下创建一个测试文件/home/tomcat/test.txt(内容为hello)
    echo "hello"> /home/tomcat/test.txt
    
    #生成1个8位随机密码,将tomcat账户的密码修改为该随机密码
    key="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    for i in seq 8
    do
    `num=$[RANDOM%62]`
    `tmp=${key:num:1}`
    `pass=$pass$tmp`
    done
    echo $pass | passwd --stdin tomcat
    
    
    #将该随机密码通过邮件的形式通知root(给root发邮件,内容是随机密码)
    echo $pass | mail -s password root
    
    #脚本自动启动vsftpd,设置开机自启
    systemctl restart vsftpd
    systemctl enable vsftpd
    

    7.循环生成 20 个 4 位随机字符串,以这 20 个随机字符串为文件名,创建 20 个文件,扩展名为 jpg

    #!/bin/bash
    key="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    for i in seq 20
    do
            create(){
            for j in seq 4
            do    
            `num=$[RANDOM%62]`
            `tmp=${key:num:1}`
            `pass=$pass$tmp`
            done
            echo $pass
            }
            touch /root/create.jpg
    done
    

    8.修改前面创建的 20 个随机文件名的文件,新的文件名为 1.jpg,2.jpg,3.jpg 以此类推(修改文件名)

    #!/bin/bash
    j=0
    for i in ls /root/*.jpg
    do
            let j++
            `mv $i /root/$j.${i##*.}`
    done
    

    9.编写函数,函数的功能是给网卡配置 IP
    检测某个网卡是否有 IP(通过 read 读取网卡名称,如果用户未输入则默认为 eth0)
    如果网卡没有 IP,调用前面的函数给网卡配置 IP
    如果网卡已经有 IP,则提示该网卡已经有 IP 地址

    #!/bin/bash
    ipcf(){
            nmcli connection modify $1 ipv4.method manual ipv4.addresses $2/24 connection.autoconnect yes
            nmcli connection up $1
    }
    
    read -p "请输入要配置的网卡名称:" ethernet
    ethernet=${ethernet:-eth0}
    ifconfig $ethernet | grep inet &> /dev/null
    if [ $? -eq 0 ]; then
            echo "网卡$ethernet已经有IP地址"
    else
            read -p "请输入IP地址:" address
            ipcf $ethernet $address
    fi
    

    10.提取当前计算机中用户的密码

    #!/bin/bash
    user=$(awk -F: '/bash$/{print $1}' /etc/passwd)
    
    for NAME in $user
    do
            grep "^$NAME" /etc/shadow | awk -F: '{print $1 "-->" $2}'
    done
    

    11.循环刷新显示当前计算机的信息

    #!/bin/bash
    while :
    do
    clear
    cpu=`uptime | awk '{print $NF}'`
    echo "本机CPU最近15分钟的负载是:"$CPU
    ip=`ifconfig eth | awk '/inet/{print $2}'`
    echo "本机IP地址为:"$ip
    net_in=`ifconfig eth0 | awk '/RX p/{print $5}'`
    echo "入站网卡流量为:"$net_in
    net_out=`ifconfig eth0 | awk '/TX p/{print $5}'`
    echo "出站网卡流量为:"$net_out
    mem=`free | awk '/Men:/{print $4}'`
    echo "内存剩余容量为:"$mem
    disk=`df -h| awk '#\/$#{print $4}'`
    echo "根分区剩余容量为:"$disk
    user=`cat /etc/passwd | wc -l`
    echo "计算机账户数量为:"$user
    login=`who | wc -l`
    echo "登陆账户数量为:"$login
    soft=`rpm -qa | wc -l`
    echo "已安装软件包数量为:"$soft
    process=`ps aux | wc -l`
    echo "当前计算机启动的进程数量为:"$process
    
    sleep 1
    done
    
    展开全文
  • shell 脚本案例

    2020-05-25 09:46:52
    1 写一个脚本,产生一个 phonenum.txt文件,随时产生以139开头的手机号1000个,每个一行 #! /bin/env bash file=./phonenum.txt for ((i=1;i<=1000;i++)) do n1=$[$RANDOM%10] n2=$[$RANDOM%10] n3=$[$RANDOM%...

    1 写一个脚本,产生一个 phonenum.txt文件,随时产生以139开头的手机号1000个,每个一行

    #! /bin/env bash
    file=./phonenum.txt
    for ((i=1;i<=1000;i++))
    do
       n1=$[$RANDOM%10]
       n2=$[$RANDOM%10]
       n3=$[$RANDOM%10]
       n4=$[$RANDOM%10]
       n5=$[$RANDOM%10]
       n6=$[$RANDOM%10]
       n7=$[$RANDOM%10]
       n8=$[$RANDOM%10]
       echo "139$n1$n2$n3$n4$n5$n6$n7$n8" >> $file
    done
    

    注意:
    1 显示文本有多少行
    wc -l 文件
    2 我在file那行 =多了一个空格
    一直显示无法定位到 file文件
    3 for 要使用两个 ()
    不然语法错误
    4 for ((i=1;i<=1000;i++))
    把 i<=1000 写成了 l<=1000 然后成了死循环

    2 从上面的1000个手机号里面抽奖5个幸运观众,显示出这5个幸运观众
    但 只显示头三个数和尾号四个数,中间数都用*代替

    #! /bin/bash
    phone=./phonenum.txt
    for ((i=1;i<=5;i++))
    do
    # line得到有多少行
      line=`wc -l $phone |cut -d' ' -f1`
    # luck_line 得到 1到 line 的随机数
      luck_line=$[RANDOM%$line+1]
    # luck_num 得到文件的 第luck_line 行数据
      luck_num=`head -$luck_line $phone|tail -1`
    #  luck_num:7:4 取 luck_num 从第个8个数开始取4个数
      echo "139****${luck_num:7:4}"
      echo $luck_num >> luck.txt
    #  从源文件中删除  第luck_num 行
      sed -i "/$luck_num/d" $phone
    done
    
    展开全文
  • shell脚本 案例

    2017-08-01 12:03:00
    4. Shell编程之LAMP一键安装脚本实战 [ root@shell  shell]# cat autoLAMP.sh  #!/bin/bash #auto make install LAMP #by auto ly 2015 # httpd define path varible H_FILES=httpd-2.2.31.tar.bz...
    1,写一个循环,ping整个子网的ip。
     
    使用while循环
    #!/bin/bash 
    ip=223 
    while [ "$ip" -ne "239" ]
    do
            ping 121.201.0.$ip -c1 && echo "121.201.0.$ip yes" >> ip_list.txt || echo "121.201.0.$ip no" >> ip_list.txt
    ((ip+=1))
    done
     
    使用for循环(推荐)
    #!/bin/bash
    for ip in 192.168.1.{100..255} 
    do
            ping $ip -c 1 && echo $ip yes >> ./check_ip_network.txt|| echo $ip no >> ./check_ip_network.txt
    done
     

    2, 9*9乘法表

    #!/bin/bash

    for a in {1..9}
    do
            for b in {1..9}
            do
                    [ $a -ge $b ] && echo -en "$a x $b = $(expr $a \* $b) "
            done
    echo ""
    done
     
    [root@shell shell]# sh 9x9.sh
    1 x 1 = 1 
    2 x 1 = 2 2 x 2 = 4 
    3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 
    4 x 1 = 4 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16 
    5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25 
    6 x 1 = 6 6 x 2 = 12 6 x 3 = 18 6 x 4 = 24 6 x 5 = 30 6 x 6 = 36 
    7 x 1 = 7 7 x 2 = 14 7 x 3 = 21 7 x 4 = 28 7 x 5 = 35 7 x 6 = 42 7 x 7 = 49 
    8 x 1 = 8 8 x 2 = 16 8 x 3 = 24 8 x 4 = 32 8 x 5 = 40 8 x 6 = 48 8 x 7 = 56 8 x 8 = 64 
    9 x 1 = 9 9 x 2 = 18 9 x 3 = 27 9 x 4 = 36 9 x 5 = 45 9 x 6 = 54 9 x 7 = 63 9 x 8 = 72 9 x 9 = 81
     

    3. shell跳板机(触发信号后屏蔽信号)

    方法1:
    1)首先做好ssh key验证,做ssh key免登陆验证
    2)实现传统的远程连接菜单选择脚本
    3)利用linux信号防止用户在跳板机上操作。
    4)用户登陆后既调用脚本。
     
    代码如下:
    [root@shell practical_script]# cat tiaoban.sh 
    #!/bin/bash

    # function
    function trapper ()
    {
            trap ':' INT EXIT TSTP TERM HUP
    }
    while :
    do
            trapper
                    clear
                            cat <<menu
    # This is a springboard machine, can only be through the springboard 
    # machine landing the following system.


            Please select the server you want to log on:

                                    1) link 126.201.20.132(TT3)
                                    2) exit
    menu

    read -p "pleas select: " num
    case "$num" in
            1)
                    echo "126.201.20.132(TT3) landing ..."
                    ssh -p 26333 xxllen@126.201.20.132
                    ;;
            2|*)
                    exit
                    ;;

    esac
    done
     
    方法2: root链接服务器,expect 每次重新建立ssh key
     
    ###########################################################################################
    4. Shell编程之LAMP一键安装脚本实战
    [root@shell shell]# cat autoLAMP.sh 
    #!/bin/bash
    #auto make install LAMP
    #by auto ly 2015

    # httpd define path varible
    H_FILES=httpd-2.2.31.tar.bz2
    H_FILES_DIR=httpd-2.2.31
    H_URL=http://mirrors.cnnic.cn/apache/httpd/
    H_PREFIX=/usr/local/apache2/

    M_FILES=mysql-5.0.41.zip
    M_FILES_DIR=mysql-5.0.41
    M_URL=http://gyconfigfc.attogames.com/
    M_PREFIX=/usr/local/mysql/

    # PHP define path variable
    P_FILES=php-5.3.28.tar.bz2
    P_FILES_DIR=php-5.3.28
    P_URL=http://mirrors.sohu.com/php/
    P_PREFIX=/usr/local/php5/


    if [ -z "$1" ];then
            echo -e "\033[36mPlease Select Install Menu follow:\033[0m"
            echo -e "\033[32m1)Compile and install Apache server:\033[1m"
            echo "2)Compile and install MySQL server"
            echo "3)Compile and install PHP server"
            echo "4)Configure index.php and start the LAMP service"
            echo -e "\033[31mUsage: {$0 1 | 2 | 3 | 4 | help}\033[0m"
            exit
    fi

    if [ $1 -eq 1 ];then
            wget -c $H_URL/$H_FILES && tar -jxvf $H_FILES && cd $H_FILES_DIR ;./configure --prefix=$H_PREFIX

            if [ $? -eq 0 ];then
                    make && make install
                    echo -e "\033[32mThe $H_FILES_DIR Server Install Successfully!\033[0m"
            else
                    echo -e "\033[31mThe $H_FILES_DIR Server Install Failed,Please check ...\033[0m"
            fi
    fi

    # auto install Mysql
    if [ $1 -eq 2 ];then
            wget -c $M_URL/$M_FILES && unzip $M_FILES && cd $M_FILES_DIR ;chmod +x configure && chmod +x install-sh;./configure --prefix=$M_PREFIX

            if [ $? -eq 0 ];then
                    make && make install
                    echo -e "\033[32mThe $M_FILES_DIR Server Install Successfully!\033[0m"
            else
                    echo -e "\033[31mThe $M_FILES_DIR Server Install Failed,Please check ...\033[0m"
            fi
    fi

    # auto install PHP Server
    if [ $1 -eq 3 ];then
            wget -c $P_URL/$P_FILES && tar -jxvf $P_FILES && cd $P_FILES_DIR ;./configure --prefix=$P_PREFIX --with-config-file-path=$P_PREFIX/etc --with-mysql=$M_PREFIX --with-apxs2=/usr/local/apache2/bin/apxs

            if [ $? -eq 0 ];then
                    make && make install
                    echo -e "\033[32mThe $P_FILES_DIR Server Install Successfully!\033[0m"
            else
                    echo -e "\033[31mThe $P_FILES_DIR Server Install Failed,Please check ...\033[0m"
            fi
    fi

    if [ $1 -eq 4 ];then
            sed -i '/DirectoryIndex/s/index.html/index.php index.html/g' $H_PREFIX/conf/httpd.conf
            $H_PREFIX/bin/apachectl restart
            echo "AddType   application/x-httpd-php .php" >> $H_PREFIX/conf/httpd.conf
            IP=`ifconfig eth0|grep "Bcast"|awk '{print $2}'|cut -d: -f2`
            echo "You can access http://$IP/"

    cat >$H_PREFIX/htdocs/index.php <<EOF
    <?php
    phpinfo();
    ?>
    EOF
    fi
    ################################################################################################
     

    转载于:https://www.cnblogs.com/rayong/p/7267755.html

    展开全文
  • #!/bin/bashyumNum=(yum repolist | awk ...then echo ”yum不可用” exit 1fiyum -y install gcc openssl-devel pcre-develtar -xf nginx-1.12.2.tar.gzcd nginx-1.12.2./configuremakemake install2)执行测试脚本
  • shell脚本一、Shell脚本概述1.1shell脚本应用场景二、Shell脚本变量2.1自定义变量三、Shell脚本小练习3.1shell脚本执行的基本命令3.2shell脚本设置本地yum仓库3.3下载服务器shell脚本3.4创建新用户并基于密码3.5...
  • Shell脚本案例:批量新增用户1、准备用户数据文件 cat users.txtuser1 1234567890user2 1234567890user3 1234567...
  • 脚本对于shell初学者来说是不错案例选择,仅用619行脚本代码,写出了有趣的小游戏; 环境:Centos7.x 1.dos2unix安装 yum -y install dos2unix 2.格式转换: dos2unix square.sh 3.执行脚本 sh square.sh 备注...
  • shell脚本案例学习

    2010-10-18 14:50:09
    是一个很好的学习脚本案例文档,供大家学习指导。
  • shell脚本案例赏析

    2020-09-20 20:55:49
    #!/bin/bash #重新执行指定批量,运行一次执行一个月的时间跨度。读取配置文件$APPHOME/etc/reBatch.conf #用法:./reBatch.sh截止到月份的日期例如:./reBatch.sh2014-06 ./etc/profile .~/.bashrc ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,249
精华内容 899
关键字:

shell脚本案例