1、while循環語句及循環嵌套
(1)語法格式
while-do-done
重複測試指令的條件,只要條件成立就反覆執行對應的命令操作,直到命令不成立或爲假;
語法格式:
while 測試命令
do
命令
done
(2)實例
A、降序輸出1-5
[root@test ~]# vi while-1.sh
#!/bin/bash
i=5
while [ $i -gt 0 ]
do
echo $i
i=$[$i-1]
done
[root@test ~]# sh while-1.sh
5
4
3
2
1
[root@test ~]#
B、輸出兩數相加的結果
[root@test ~]# cat while-2.sh
#!/bin/bash
i=1
while [ $i -lt 5 ]
do
sum=$(($i+$i))
echo "$i+$i=$sum"
((i++))
done
#雙括號可以進行邏輯運算,四則運算
[root@test ~]# sh while-2.sh
1+1=2
2+2=4
3+3=6
4+4=8
[root@test ~]#
(3)循環嵌套
A、創建用戶
[root@test ~]# vi name.txt
aa bb cc
[root@test ~]# vi useradd.sh
#!/bin/bash
for name in $(cat /root/name.txt)
do
id $name &>/dev/null
if [ $? -ne 0 ];then
useradd $name
echo "123456" |passwd --stdin $name &>/dev/null
echo "$name is created"
else
echo "$name is exist"
fi
done
[root@test ~]# sh useradd.sh
aa is created
bb is created
cc is created
[root@test ~]# id aa
uid=501(aa) gid=501(aa) groups=501(aa)
seq 用於生成從一個數到另一個數之間的所有整數。
用法:seq [選項]... 尾數
或:seq [選項]... 首數 尾數
或:seq [選項]... 首數 增量 尾數
以指定增量從首數開始打印數字到尾數。
-f, --format=格式 使用printf 樣式的浮點格式
-s, --separator=字符串使用指定字符串分隔數字(默認使用:\n)
-w, --equal-width 在列前添加0 使得寬度相同
--help 顯示此幫助信息並退出
--version 顯示版本信息並退出
從1循環到100的兩種方法(bash 其它的shell沒試過)
for x in `seq 1 100`;do echo $x;done
for x in {1..100};do echo $x;done
-f 指定輸出格式
#seq -f “%3g” 13 數字位數爲三位,不足補空格
[root@test ~]# seq -f “%3g” 3
“ 1”
“ 2”
“ 3”
[root@test ~]#
#seq -f “%03g” 1 5 數字位數爲三位,不足補零
[root@test ~]# seq -f “%03g” 1 5
“001”
“002”
“003”
“004”
“005”
[root@test ~]#
#seq -f "str%03g" 1 3
[root@test ~]# seq -f "str%03g" 1 3
str001
str002
str003
[root@test ~]#
-w 指定輸出數字同寬,與-f部分作用相似,不可與-f選項同時使用
#seq -w 8 12
[root@test ~]# seq -w 8 12
08
09
10
11
12
[root@test ~]#
-s 指定分隔符,默認分隔符是/n(回車)
#seq -s " " 1 5 空格作爲分隔符
[root@test ~]# seq -s " " 1 5
1 2 3 4 5
[root@test ~]#
#seq -s "`echo -e "\t"`" 1 3 \t作爲分隔符
[root@test ~]# seq -s "`echo -e "\t"`" 1 3
1 2 3
[root@test ~]#
注:echo -e解釋轉義字符
個人公衆號: