Shell语法—— for 循环
2018-10-09 23:28
411 查看
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 所在部分
案例三:
使用 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
方法二:
通过 openssl 产生随机数
可产生:数字、字母大小写、特殊字符的结合
方法三:
通过时间获得随机数:date
方法四:
通过 /dev/urandom 配合 chksum 生成随机数
方法五:
通过 UUID 生成随即数
UUID:通用唯一识别码
方法六:
使用 expect 附带的 mkpasswd 生成随机数
注意:mkpasswd 命令依赖于 expect 数据包,所以需要先安装该包
参数 | 说明 |
---|---|
-l | 指定密码长度 |
-d | 指定密码中数字的数量 |
-c | 指定密码中小写字母的数量 |
-C | 指定密码中大写字母的数量 |
-s | 指定密码中特殊字符的数量 |
案例一:
批量创建 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
相关文章推荐
- shell语法中的for循环用法
- C++中for循环的5种语法
- 2、shell条件测试,运算符,选择结构,for循环结构
- C++中for循环的5种语法,值得学习!!!
- Shell for&while 循环详细总结
- 一个shell for循环与case结合的脚本(监控程序状态)
- 水晶报表-控制结构-For 循环(Crystal 语法)
- Linux shell for while 循环
- shell脚本下的循环语句for、while、until
- 对Linux下shell编程之for循环的实例讲解
- Shell中的for和while循环详细总结
- C++中for循环的5种语法
- shell 之 for 循环
- 增强for循环语法
- Linux 下的 shell 编程之 for 循环
- shell脚本编程-循环(for、while、until)
- Shell中的循环语句for、while、until实例讲解
- shell中的for循环用法很多
- 第三章:shell结构化命令 for & while循环
- shell脚本 for循环实现文件和目录遍历