Shell语法—— for 循环

for 循环语句语法

for 循环语句语法格式为:
格式一:

for 变量名 in 变量取值列表
do
        指令...
done

格式二:

for ((exp1;exp2;exp3))
do
        指令...
done

案例一:
使用 for 循环修改文件扩展名(仅作为练习,实际操作可用 rename)
逻辑为:把想要的结果先打印出来,然后拼接为 mv 的熟悉格式,最后实现批量 mv 操作

#!/bin/bash
for i in `ls /home/test/*.html`
do
#       mv $i `echo $i|sed 's#.html#.png#g'`
        mv $i `echo $i|awk -F "_abcd" '{print $1".png"}'`
done

案例二:
使用 rename 命令去掉文件名中 abc 的部分
逻辑:使用 rename 命令使 abc 的部分替换为了 空 ,即去掉了 abc 所在部分
Shell语法—— for 循环
案例三:
使用 for 循环打印 九九乘法表(仅供娱乐)

#!/bin/bash
color='\E[47;30m'
end='\E[0m'
for ((i=1;i<=9;i++))
do
        for ((j=1;j<=i;j++))
        do
                echo -en "${color}$i*$j=$((i*j))$end "
        done
        echo -e '\n'
done

案例四:
for 循环实现 MySQL 分库备份
第一步:批量建库

#!/bin/bash
list=(
lib
lib1
lib2
lib3
)
PATH="/application/mysql/bin:$PATH"
MYUSER=root
MYPASS=123456
SOCKET=/data/3306/mysql.sock
MYCMD="mysql -u$MYUSER -p$MYPASS -S $SCOKEY"
for dbname in ${list[*]}
do
  $MYCMD -e "create database $dbname"
done

第二步:批量给库备份

#!/bin/bash
PATH="/application/mysql/bin:$PATH"
DBPATH=/server/backup
MYUSER=root
MYPASS=oldboy123
SOCKET=/data/3306/mysql.sock
MYCMD="mysql -u$MYUSER -p$MYPASS -S $SOCKEY"
MYDUMP="mysqldump -u$MYUSER -p$MYPASS -S $SOCKEY"
[ ! -d "$DBPATH" ]&& mkdir $DBPAth
for dbname in `$MYCMD -e "show databases;"|sed '1,2d'|egrep -v "mysql|schema"
`
do
 $MYDUMP $dbname|gzip >$DBPATH/${dbname}_$(date +%F).sql.gz
done

案例五:实现 MySQL 分库分表备份

Linux 系统产生随机数的 6 种方法

方法一:
通过系统环境变量:$RANDOM
Shell语法—— for 循环
方法二:
通过 openssl 产生随机数
可产生:数字、字母大小写、特殊字符的结合
Shell语法—— for 循环
方法三:
通过时间获得随机数:date
Shell语法—— for 循环
方法四:
通过 /dev/urandom 配合 chksum 生成随机数
Shell语法—— for 循环
方法五:
通过 UUID 生成随即数
UUID:通用唯一识别码
Shell语法—— for 循环
方法六:
使用 expect 附带的 mkpasswd 生成随机数
注意:mkpasswd 命令依赖于 expect 数据包,所以需要先安装该包

参数说明
-l指定密码长度
-d指定密码中数字的数量
-c指定密码中小写字母的数量
-C指定密码中大写字母的数量
-s指定密码中特殊字符的数量

Shell语法—— for 循环
案例一:
批量创建 10 个系统账号并设置密码

#!/bin/bash
. /etc/init.d/functions
user=ysg
pwfile=/home/pwfile.log
for i in `seq -w 1 3`
do
        users=$user$i
        passwd="`echo "test$RANDOM"|md5sum|cut -c 1-8`"
        useradd $users &>/dev/null &&\
        echo "$passwd"|passwd --stdin $users &>/dev/null &&\
        echo -e "user:$users\tpasswd:$passwd">>$pwfile
        if [ $? -eq 0 ];then
                action "$users is ok" /bin/true
        else
                action "$users is fail" /bin/false
        fi
done
echo "-------------------"
cat $pwfile

转载于:https://blog.51cto.com/12384628/2297313

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值