Shell語法—— for 循環

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 所在部分
Shell語法—— for 循環
案例三:
使用 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
Shell語法—— for 循環
方法二:
經過 openssl 產生隨機數
可產生:數字、字母大小寫、特殊字符的結合
Shell語法—— for 循環
方法三:
經過時間得到隨機數:date
Shell語法—— for 循環
方法四:
經過 /dev/urandom 配合 chksum 生成隨機數
Shell語法—— for 循環
方法五:
經過 UUID 生成隨即數
UUID:通用惟一識別碼
Shell語法—— for 循環
方法六:
使用 expect 附帶的 mkpasswd 生成隨機數
注意:mkpasswd 命令依賴於 expect 數據包,因此須要先安裝該包code

參數 說明
-l 指定密碼長度
-d 指定密碼中數字的數量
-c 指定密碼中小寫字母的數量
-C 指定密碼中大寫字母的數量
-s 指定密碼中特殊字符的數量

Shell語法—— for 循環
案例一:
批量建立 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
相關文章
相關標籤/搜索