Shell 腳本一直以來不是很入門,很多時候就是用到再查,發(fā)現(xiàn)自己有幾個重復用比較高的點,還是記錄一下,至少查的時候能少費點功夫~~
1. for 循環(huán)
(1)列表for循環(huán)
for i in {1..0}
#for i in 1 2 3 4 5
do
echo "the value is $i"
done
Shell支持使用略寫的計數(shù)方式,如{1..10},表示1到10的整數(shù)數(shù)字;
Shell還支持安規(guī)定的步數(shù)進行跳躍的方式實現(xiàn)列表for循環(huán),例如計算1~100之內所有奇數(shù)的和。
!# /bin/bash
sum=0
for i in {1..100..2}
do
let "sum+=i"
done
echo $sum
i 按照2的增量增長,一直到增長到100。即實現(xiàn)100內奇數(shù)加和。還可以使用seq命令實現(xiàn)按2遞增來計算1..100內的所有奇數(shù)之和。for i in $(seq 1 2 100),seq 表示起始值為1,增量為2,結束條件值為100。
for循環(huán)除了數(shù)字列表,還可以生成字符串列表,如列出當前文件夾下的所有文件:
#!/bin/bash
for i in $(ls)
#for i in *
#for i in `ls`
do
echo $i
done
還可以傳遞命令行參數(shù)
腳本:
#! /bin/bash
echo "number of arguments is $#"
echo "show parm list: $*"
echo "what you input is"
for i in "$@"
do
echo $i
done
運行程序:
$ sh ./111.sh 1 2 3
number of arguments is 3
show parm list:1 2 3
what you input is
1
2
3
$#表示傳遞的參數(shù)的個數(shù);$@表示參數(shù)的列表。
(2) 類C風格的for循環(huán)
也稱之為計次循環(huán)。 切記使用的是雙括號。
#! /bin/bash
for((i=1;i<=5;i++))
do
echo $i
done
運行:
sh ./222.sh
1
2
3
4
5
上面的計算100以內奇數(shù)的和可以使用類C的for循環(huán)實現(xiàn)
#!/bin/bash
sum=0
for((i=1;i<=100;i=i+2))
do
let "sum+=i"
#((sum+=i))
done
echo $sum
2. for雙層循環(huán)
通過for循環(huán)實現(xiàn)九九乘法表
#! /bin/bash
for((i=1;i<10;i++))
do
for((j=1;j<=i;j++))
do
let sum=i*j
echo -ne "$i*$j=$sum\t"
done
echo ""
done
運行:
$ sh ./444.sh
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81