zoukankan      html  css  js  c++  java
  • SHELL用法四(for语句)

    1、SHELL编程For语句案例实战
    1)For语句固定的语法格式:
    For i in (表达式)
    do
    动作1
    done
    2)For语句案例操作一:
    #!/bin/bash
    for NUM in 1 2 3 4
    do
    echo “$NUM) www.jd.com”
    done
    3)For语句案例操作二:
    #!/bin/bash
    for NUM in $(echo {1..4})
    do
    echo “$NUM) www.jd.com”
    done
    4)For语句案例操作三:
    #!/bin/bash
    COMMAND="$*"for IP in 127.0.0.{1..10}
    do
    echo -e "33[32mThe $IP Exec Command:33[0m"
    ssh -l root $IP "$COMMAND"
    scp -r jfedu.txt root@$IP:/data/backup/
    done
    5)For语句案例操作四:
    #!/bin/bash
    for LOG in `ls access_2019*`
    do
    echo $LOG
    tar -czvf ${LOG}.tar.gz $LOG
    if [ ! -d /data/backup/`date +%F` ];then
    mkdir -p /data/backup/`date +%F`
    fi
    mv ${LOG}.tar.gz /data/backup/`date +%F`
    rm -rf $LOG
    done
    6)For语句案例操作五:
    #!/bin/bash
    for LOG in `ls /data/backup/2019-07-06/*`
    doecho $LOG
    tar -xzf $LOG -C /data/logs/linux_web/
    done
    7)For循环打印10秒等待提示:
    for ((j=0;j<=10;j++))
    do
    echo -ne "33[32m-33[0m"
    sleep 1
    done
    echo
    2、SHELL编程While语句案例实战
    1)While语句固定的语法格式:
    While (表达式|条件)
    do
    动作1
    done
    (1) 循环打印BAT企业官网,read指令用于读取行或者读取变量:
    #!/bin/bash
    #By author jfedu.net 2017
    while read LINE
    do
    echo $LINEdone <jfedu.txt
    其中jfedu.txt内容为:
    www.baidu.com
    www.taobao.com
    www.qq.com
    (2) While无限每秒输出Hello World:
    #!/bin/bash
    #By author jfedu.net 2017
    while sleep 1
    do
    echo -e "33[32mHello World.33[0m"
    done
    (3) 循环打印1至100数字,expr用于运算逻辑工具:
    #!/bin/bash
    #By author jfedu.net 2017
    i=0
    while ((i<=100))
    do
    echo $i
    i=`expr $i + 1`
    done
    (4) While循环求1-100的总和:#!/bin/bash
    #By author jfedu.net 2017
    #auto sum 1 100
    j=0
    i=1
    while ((i<=100))
    do
    j=`expr $i + $j`
    ((i++))
    done
    echo $j
    (5) While循环逐行读取文件:
    #!/bin/bash
    #By author jfedu.net 2017
    while read line
    do
    echo $line;
    done < /etc/hosts
    (6) While循环判断输入数字是否大于100(IP正确性类似的),如果小于一
    直提示其输入,直到正确为止:
    #!/bin/bash
    while truedo
    read -p "Please input A Number:" INPUT
    if [ "$INPUT" -gt 100 ];then
    echo $INPUT
    break;
    fi
    done
    (7) 每5秒循环判断/etc/passwd是否被非法修改:
    #!/bin/bash
    #Check File to change.
    #By author jfedu.net 2017
    FILES="/etc/passwd"
    while true
    do
    echo "The Time is `date +%F-%T`"
    OLD=`md5sum $FILES|cut -d" " -f 1`
    sleep 5
    NEW=`md5sum $FILES|cut -d" " -f 1`
    if [[ $OLD != $NEW ]];then
    echo "The $FILES has been modified."
    fi
    done
    (8) 每10秒判断jfedu用户是否登录系统:
    #!/bin/bash
    while true
    do
    USER=$*
    echo -e "33[32m`date`33[0m"
    for i in $USER
    do
    NUM=$(who|grep $i|wc -l)
    if [ $NUM -ne 0 ];then
    echo "The $i is Login Linux System."
    fi
    done
    echo "--------------------"
    sleep 10
    done
    3、SHELL编程实战MYSQL数据库备份脚本
     备份脚本实现任意单个库的备份;
    #!/bin/bash
    #2019年7月6日15:54:03
    #auto backup mysql database.
    #by author www.jfedu.net####################
    SQL_USR="backup"
    SQL_PWD="backup"
    SQL_DB="$1"
    SQL_DIR="/data/backup/$(date +%F)"
    SQL_CMD="/usr/bin/mysqldump"
    if [ $# -eq 0 -o "$1" == "help" ];then
    echo -e "33[32m----------------33[0m"
    echo -e "33[32mUsage:{/bin/bash $0
    jfedu1|www|jfedu2|help}033[0m"
    exit 1
    fi
    if [ ! -d $SQL_DIR ];then
    mkdir -p $SQL_DIR
    fi
    $SQL_CMD -u$SQL_USR -p$SQL_PWD $SQL_DB >
    $SQL_DIR/${SQL_DB}.sql
    if [ $? -eq 0 ];then
    echo -e "33[32mThe MYSQL $SQL_DB backup
    success.033[0m"
    echo "----------------"
    echo "ls -l $SQL_DIR/"ls -l $SQL_DIR/
    else
    rm -rf $SQL_DIR/${SQL_DB}.sql
    echo -e "33[32mThe MYSQL $SQL_DB backup
    Failed.033[0m"
    exit
    fi
     备份脚本实现任意多个库备份;
    #!/bin/bash
    #2019年7月6日15:54:03
    #auto backup mysql database.
    #by author www.jfedu.net
    ####################
    SQL_USR="backup"
    SQL_PWD="backup"
    SQL_DB="$*"
    SQL_DIR="/data/backup/$(date +%F)"
    SQL_CMD="/usr/bin/mysqldump"
    if [ $# -eq 0 -o "$1" == "help" ];then
    echo -e "33[32m----------------33[0m"
    echo -e "33[32mUsage:{/bin/bash $0
    jfedu1|www|jfedu2|help}033[0m"exit 1
    fi
    if [ ! -d $SQL_DIR ];then
    mkdir -p $SQL_DIR
    fi
    for SQL_DB in `echo $SQL_DB`
    do
    $SQL_CMD -u$SQL_USR -p$SQL_PWD $SQL_DB >
    $SQL_DIR/${SQL_DB}.sql
    if [ $? -eq 0 ];then
    echo -e "33[32mThe MYSQL $SQL_DB backup
    success.033[0m"
    echo "----------------"
    echo "ls -l $SQL_DIR/"
    ls -l $SQL_DIR/
    else
    rm -rf $SQL_DIR/${SQL_DB}.sql
    echo -e "33[32mThe MYSQL $SQL_DB backup
    Failed.033[0m"
    exit
    fi
    done
     备份脚本实现所有数据库的备份;
    #!/bin/bash
    #2019年7月6日15:54:03
    #auto backup mysql database.
    #by author www.jfedu.net
    #########################
    SQL_USR="backup"
    SQL_PWD="backup"
    SQL_DB="$*"
    SQL_DIR="/data/backup/$(date +%F)"
    SQL_CMD="/usr/bin/mysqldump"
    if [ $# -eq 0 -o "$1" == "help" ];then
    echo -e "33[32m----------------33[0m"
    echo -e "33[32mUsage:{/bin/bash $0
    jfedu1|www|jfedu2|help}033[0m"
    exit 1
    fi
    if [ ! -d $SQL_DIR ];then
    mkdir -p $SQL_DIR
    fi
    for SQL_DB in `echo $SQL_DB`do
    if [ "$SQL_DB" == "all" ];then
    $SQL_CMD -u$SQL_USR -p$SQL_PWD
    --all-databases > $SQL_DIR/${SQL_DB}.sql
    if [ $? -eq 0 ];then
    echo -e "33[32mThe MYSQL $SQL_DB
    backup success.033[0m"
    echo "----------------"
    echo "ls -l $SQL_DIR/"
    ls -l $SQL_DIR/
    continue
    else
    rm -rf $SQL_DIR/${SQL_DB}.sql
    echo -e "33[32mThe MYSQL $SQL_DB
    backup Failed.033[0m"
    exit
    fi
    fi
    $SQL_CMD -u$SQL_USR -p$SQL_PWD $SQL_DB >
    $SQL_DIR/${SQL_DB}.sql
    if [ $? -eq 0 ];then
    echo -e "33[32mThe MYSQL $SQL_DB backupsuccess.33[0m"
    echo "----------------"
    echo "ls -l $SQL_DIR/"
    ls -l $SQL_DIR/
    else
    rm -rf $SQL_DIR/${SQL_DB}.sql
    echo -e "33[32mThe MYSQL $SQL_DB backup
    Failed.033[0m"
    exit
    fi
    done
    4、SHELL编程实战Linux系统IP修改脚本
     能够将动态IP修改为静态IP;
    #!/bin/bash
    #2019年7月6日16:51:27
    #auto change server ip.
    #by author www.jfedu.net
    ####################
    ETH_IPADDR="$1"
    GATEWAY="10.10.10.1"
    DNS_SERVER="8.8.8.8"ETH_NAME="ifcfg-ens33"
    NETMASK="255.255.255.0"
    ETH_BAK="/data/backup/`date +%F`"
    ETH_DIR="/etc/sysconfig/network-scripts"
    if [ $# -eq 0 ];then
    echo -e "33[32m---------------33[0m"
    echo -e "33[32mUsage:{/bin/bash $0
    10.10.10.111|1.1.1.1|help}033[0m"
    exit 1
    fi
    if [ ! -d $ETH_BAK ];then
    mkdir -p $ETH_BAK
    fi
    cd $ETH_DIR
    cp $ETH_NAME $ETH_BAK
    grep "dhcp" $ETH_NAME
    if [ $? -eq 0 ];then
    echo "TYPE="Ethernet"
    BOOTPROTO="static"
    NAME="ens33"
    DEVICE="ens33"
    ONBOOT="yes"">$ETH_NAMEecho "IPADDR=$ETH_IPADDR" >>$ETH_NAME
    echo "NETMASK=$NETMASK" >>$ETH_NAME
    echo "GATEWAY=$GATEWAY" >>$ETH_NAME
    echo "DNS1=$DNS_SERVER" >>$ETH_NAME
    fi
     能够实现本身静态IP,修改为其他静态IP;
    #!/bin/bash
    #2019年7月6日16:51:27
    #auto change server ip.
    #by author www.jfedu.net
    ####################
    ETH_IPADDR="$1"
    GATEWAY="10.10.10.1"
    DNS_SERVER="8.8.8.8"
    ETH_NAME="ifcfg-ens33"
    NETMASK="255.255.255.0"
    ETH_BAK="/data/backup/`date +%F`"
    ETH_DIR="/etc/sysconfig/network-scripts"
    if [ $# -eq 0 ];then
    echo -e "33[32m---------------33[0m"
    echo -e "33[32mUsage:{/bin/bash $0
    10.10.10.111|1.1.1.1|help}033[0m"exit 1
    fi
    if [ ! -d $ETH_BAK ];then
    mkdir -p $ETH_BAK
    fi
    cd $ETH_DIR
    cp $ETH_NAME $ETH_BAK
    echo "TYPE="Ethernet"
    BOOTPROTO="static"
    NAME="ens33"
    DEVICE="ens33"
    ONBOOT="yes"">$ETH_NAME
    echo "IPADDR=$ETH_IPADDR" >>$ETH_NAME
    echo "NETMASK=$NETMASK" >>$ETH_NAME
    echo "GATEWAY=$GATEWAY" >>$ETH_NAME
    echo "DNS1=$DNS_SERVER" >>$ETH_NAME
     判断用户输入的IP是否正确;
    #!/bin/bash
    #2019年7月6日16:51:27
    #auto change server ip.
    #by author www.jfedu.net
    ####################GATEWAY="10.10.10.1"
    DNS_SERVER="8.8.8.8"
    ETH_NAME="ifcfg-ens33"
    NETMASK="255.255.255.0"
    ETH_BAK="/data/backup/`date +%F`"
    ETH_DIR="/etc/sysconfig/network-scripts"
    if [ ! -d $ETH_BAK ];then
    mkdir -p $ETH_BAK
    fi
    while true
    do
    read -p "Please Input Server IPaddr: " ETH_IPADDR
    if [ ! -z $ETH_IPADDR ];then
    IP1=`echo $ETH_IPADDR|cut -d "." -f 1`
    IP2=`echo $ETH_IPADDR|cut -d "." -f 2`
    IP3=`echo $ETH_IPADDR|cut -d "." -f 3`
    IP4=`echo $ETH_IPADDR|cut -d "." -f 4`
    if [ $IP1 -ge 1 -a $IP1 -le 255 -a $IP2 -ge 0 -a $IP2 -le 255 -a $IP3 -ge 0
    -a $IP3 -le 255 -a $IP4 -ge 0 -a $IP1 -le 255 ];then
    ETH_IPADDR=$ETH_IPADDR
    break
    fifi
    done
    cd $ETH_DIR
    cp $ETH_NAME $ETH_BAK
    echo "TYPE="Ethernet"
    BOOTPROTO="static"
    NAME="ens33"
    DEVICE="ens33"
    ONBOOT="yes"">$ETH_NAME
    echo "IPADDR=$ETH_IPADDR" >>$ETH_NAME
    echo "NETMASK=$NETMASK" >>$ETH_NAME
    echo "GATEWAY=$GATEWAY" >>$ETH_NAME
    echo "DNS1=$DNS_SERVER" >>$ETH_NAME
    if [ $? -eq 0 ];then
    echo
    echo "cat $ETH_DIR/$ETH_NAME"
    cat $ETH_DIR/$ETH_NAME
    echo "----------------"
    echo -e "33[32mThe Server IPaddr config success.33[0m"
    else
    echo
    echo -e "33[32mThe Server IPaddr config Failed.33[0m"exit
    fi
  • 相关阅读:
    改进SENet-ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
    组集成网络-Group Ensemble: Learning an Ensemble of ConvNets in a single ConvNet
    轻量级网络-ReXNet:Diminishing Representational Bottleneck on Convolutional Neural Network
    ULSAM:Ultra-Lightweight Subspace Attention Module for Compact Convolutional Neural Networks
    工作中常用的 Shell 命令及技巧
    程序员需要熟悉的英语单词
    程序员基本素养
    Java 基础 —— Lambda 表达式
    将博客搬至CSDN
    IDEA 插件推荐 —— 让你写出好代码的神器!
  • 原文地址:https://www.cnblogs.com/nshgo/p/12157301.html
Copyright © 2011-2022 走看看