shell study-11day--shell流程控制語句while

1while循環語句及循環嵌套

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解釋轉義字符

個人公衆號:

image.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章