SHELL用法四(for语句)
2024-09-02 20:37:17
1、SHELL编程For语句案例实战
1)For语句固定的语法格式:
For i in (表达式) do 动作1 done
2)For语句案例操作一:
#!/bin/bash do echo “$NUM) www.jd.com” done
3)For语句案例操作二:
#!/bin/bash ..}) do echo “$NUM) www.jd.com” done
4)For语句案例操作三:
#!/bin/bash COMMAND=.{..} do echo -e "\033[32mThe $IP Exec Command:\033[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 --/*` doecho $LOG tar -xzf $LOG -C /data/logs/linux_web/ done
7)For循环打印10秒等待提示:
;j<=;j++)) do echo -ne "\033[32m-\033[0m" done echo
2、SHELL编程While语句案例实战
1)While语句固定的语法格式:
While (表达式|条件) do 动作1 done
(1) 循环打印BAT企业官网,read指令用于读取行或者读取变量:
#!/bin/bash #By author jfedu.net 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 do echo -e "\033[32mHello World.\033[0m" done
(3) 循环打印1至100数字,expr用于运算逻辑工具:
#!/bin/bash #By author jfedu.net i= )) do echo $i i=`` done
(4) While循环求1-100的总和:#!/bin/bash
#By author jfedu.net #auto j= i= )) do j=`expr $i + $j` ((i++)) done echo $j
(5) While循环逐行读取文件:
#!/bin/bash #By author jfedu.net while read line do echo $line; done < /etc/hosts
(6) While循环判断输入数字是否大于100(IP正确性类似的),如果小于一
直提示其输入,直到正确为止:
#!/bin/bash while truedo read -p "Please input A Number:" INPUT ];then echo $INPUT break; fi done
(7) 每5秒循环判断/etc/passwd是否被非法修改:
#!/bin/bash #Check File to change. #By author jfedu.net FILES="/etc/passwd" while true do echo "The Time is `date +%F-%T`" OLD=`md5sum $FILES|` NEW=`md5sum $FILES|` if [[ $OLD != $NEW ]];then echo "The $FILES has been modified." fi done
(8) 每10秒判断jfedu用户是否登录系统:
#!/bin/bash while true do USER=$* echo -e "\033[32m`date`\033[0m" for i in $USER do NUM=$(who|grep $i|wc -l) ];then echo "The $i is Login Linux System." fi done echo "--------------------" done
3、SHELL编程实战MYSQL数据库备份脚本
备份脚本实现任意单个库的备份;
#!/bin/bash #2019年7月6日15:: #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" -o "$1" == "help" ];then echo -e "\033[32m----------------\033[0m" echo -e "\033[32mUsage:{/bin/bash $0 jfedu1|www|jfedu2|help}\[0m" exit 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 ];then echo -e "\033[32mThe MYSQL $SQL_DB backup success.\[0m" echo "----------------" echo "ls -l $SQL_DIR/"ls -l $SQL_DIR/ else rm -rf $SQL_DIR/${SQL_DB}.sql echo -e "\033[32mThe MYSQL $SQL_DB backup Failed.\[0m" exit fi
备份脚本实现任意多个库备份;
#!/bin/bash #2019年7月6日15:: #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" -o "$1" == "help" ];then echo -e "\033[32m----------------\033[0m" echo -e "\033[32mUsage:{/bin/bash $0 jfedu1|www|jfedu2|help}\[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 ];then echo -e "\033[32mThe MYSQL $SQL_DB backup success.\[0m" echo "----------------" echo "ls -l $SQL_DIR/" ls -l $SQL_DIR/ else rm -rf $SQL_DIR/${SQL_DB}.sql echo -e "\033[32mThe MYSQL $SQL_DB backup Failed.\[0m" exit fi done
备份脚本实现所有数据库的备份;
#!/bin/bash #2019年7月6日15:: #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" -o "$1" == "help" ];then echo -e "\033[32m----------------\033[0m" echo -e "\033[32mUsage:{/bin/bash $0 jfedu1|www|jfedu2|help}\[0m" exit 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 ];then echo -e "\033[32mThe MYSQL $SQL_DB backup success.\[0m" echo "----------------" echo "ls -l $SQL_DIR/" ls -l $SQL_DIR/ continue else rm -rf $SQL_DIR/${SQL_DB}.sql echo -e "\033[32mThe MYSQL $SQL_DB backup Failed.\[0m" exit fi fi $SQL_CMD -u$SQL_USR -p$SQL_PWD $SQL_DB > $SQL_DIR/${SQL_DB}.sql ];then echo -e "\033[32mThe MYSQL $SQL_DB backupsuccess.\033[0m" echo "----------------" echo "ls -l $SQL_DIR/" ls -l $SQL_DIR/ else rm -rf $SQL_DIR/${SQL_DB}.sql echo -e "\033[32mThe MYSQL $SQL_DB backup Failed.\[0m" exit fi done
4、SHELL编程实战Linux系统IP修改脚本
能够将动态IP修改为静态IP;
#!/bin/bash #2019年7月6日16:: #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" ];then echo -e "\033[32m---------------\033[0m" echo -e "\033[32mUsage:{/bin/bash $0 [0m" exit fi if [ ! -d $ETH_BAK ];then mkdir -p $ETH_BAK fi cd $ETH_DIR cp $ETH_NAME $ETH_BAK grep "dhcp" $ETH_NAME ];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:: #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" ];then echo -e "\033[32m---------------\033[0m" echo -e "\033[32mUsage:{/bin/bash $0 [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:: #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=`` IP2=`` IP3=`` IP4=`` -a $IP1 -le -a $IP2 -ge -a $IP2 -le -a $IP3 -ge -a $IP3 -le -a $IP4 -ge -a $IP1 -le ];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 ];then echo echo "cat $ETH_DIR/$ETH_NAME" cat $ETH_DIR/$ETH_NAME echo "----------------" echo -e "\033[32mThe Server IPaddr config success.\033[0m" else echo echo -e "\033[32mThe Server IPaddr config Failed.\033[0m"exit fi
最新文章
- C函数之memcpy()函数用法
- Android中Context详解 ---- 你所不知道的Context
- rgba兼容IE系列
- UVA 1569 Multiple
- spring mvc中实现csrf安全防御简记
- awk中{print $1}什么意思
- 优化のzen cart调用WordPress
- 如果裸写一个goroutine pool
- vertx的NetServer模块
- 打包java程序生成exe
- Delphi 开发手机 App 与其他工具之间的比较分析
- PlugNT CMS v4.6.3 调用文章上一页和下一页及点击数加1
- Gym 101194H / UVALive 7904 - Great Cells - [数学题+快速幂][2016 EC-Final Problem H]
- PAT A1104 Sum of Number Segments (20 分)——数学规律,long long
- 使用Spring-data-jpa(1)(三十)
- UMEditor(Ueditor mini)修改图片上传路径
- 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换
- SSZipArchive解压失败的原因
- [译]C语言实现一个简易的Hash table(3)
- 20155216 2016-2017-2 《Java程序设计》第七周学习总结
热门文章
- MVC——EF 回顾总结
- Linux(CENTOS7) Tomcat服务成功发布但局域网浏览器无法访问
- awk使用笔记
- go语言学习资料
- 前端Json 增加,删除,修改元素(包含json数组处理)
- android studio 3.2 查看Deveice Monitor
- [原]排错实战——VS清空最近打开的工程记录
- JQuery 点击子控件事件,不会触发父控件的事件
- 记录一次追踪@AutoWired的过程
- spring02-组件注册-@ComponentScan-自动扫描组件&;指定扫描规则