for 循環語句語法
for 循環語句語法格式爲:
格式一:html
for 變量名 in 變量取值列表 do 指令... done
格式二:mysql
for ((exp1;exp2;exp3)) do 指令... done
案例一:
使用 for 循環修改文件擴展名(僅做爲練習,實際操做可用 rename)
邏輯爲:把想要的結果先打印出來,而後拼接爲 mv 的熟悉格式,最後實現批量 mv 操做sql
#!/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 循環打印 九九乘法表(僅供娛樂)bash
#!/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 分庫備份
第一步:批量建庫app
#!/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
第二步:批量給庫備份dom
#!/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 分庫分表備份ide
Linux 系統產生隨機數的 6 種方法
方法一:
經過系統環境變量:$RANDOM
方法二:
經過 openssl 產生隨機數
可產生:數字、字母大小寫、特殊字符的結合
方法三:
經過時間得到隨機數:date
方法四:
經過 /dev/urandom 配合 chksum 生成隨機數
方法五:
經過 UUID 生成隨即數
UUID:通用惟一識別碼
方法六:
使用 expect 附帶的 mkpasswd 生成隨機數
注意:mkpasswd 命令依賴於 expect 數據包,因此須要先安裝該包code
參數 | 說明 |
---|---|
-l | 指定密碼長度 |
-d | 指定密碼中數字的數量 |
-c | 指定密碼中小寫字母的數量 |
-C | 指定密碼中大寫字母的數量 |
-s | 指定密碼中特殊字符的數量 |
案例一:
批量建立 10 個系統帳號並設置密碼server
#!/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