for循環有三種結構:列表for循環,不帶列表for循環和類C風格for循環。
do和done之間的命令成爲循環體,執行次數和list列表中常熟或字符串的個數相同。for循環,首相是將in後list的第一個常數或字符串複製給循環變量,然後執行循環體,以此執行list,最後執行done命令後的命令序列。
shell支持列表for循環使用略寫的計數方式,1~5的範圍用{1..5}表示,
shell中還支持按規定的步數進行跳躍的方式實現for循環,例如計算1~100內所有的奇數
一、列表for循環
#!/bin/bash #!/bin/bash for avrible1 in{1..5} sum=0 do for i in {1..10..2} ; do echo "hello,welcome $avrible1 times!" echo $i done done #!/bin/bash for avr in 二、不帶列表for循環 #!/bin/bash echo "number of arguments is $#" echo "What you input is: " for argument in "$@" do echo "$argument" done 三、類C語言for循環 #!/bin/bash for ((integer = 1;integer <=5; integer++)) do echo "$integer" done
for i in $(cat /tmp/xuexi/iplist);do ./batch.sh $i;done
4、for循環語句的嵌套使用
語法結構:
#!/bin/bash for 變量1 in <條件列表> do for 變量2 in <條件列表> do 命令2 done 命令1 done
關於for循環嵌套使用打印等腰三角形
#!/bin/sh read -p "Please input a number:" num read -p "Please input the char:" char for ((i=1; i<=num; i++)); do for ((j=num-i; j>0; j--)); do echo -n ' ' done for ((h=1; h<=((2*i-1)); h++)) do echo -n "$char" done echo done root@node1 shift]# ./zsj1.sh Please input a number:4 Please input the char:@ @ @@@ @@@@@ @@@@@@@
在上述等腰三角形的打印過程中分類應用了三個for循環分別是,1、外層for循環用於控制打印三角形的行數,內層第一個for循環用於打印空格數,第三個則是控制字符char的輸出個數。三個for循環的使用將等腰三角形成功的打印出來。
注:{1..10..2}取奇數
$# 參數
$@ 腳本輸入的參數其歲$#的值的標下而變小,最小值爲0