今天开始学习shell语言中的for循环语句,for语句可以实现多次的重复操作。
常用for语句的语法为:
for var in list
do
commands 语句
done
for循环在list变量值里进行反复迭代,第一次迭代使用第一个值,第二次用第二个值,以此类推,直到所有元素都过一遍。
实例1:依次输出一串字符串(用空格分割的字符串)中的每一个字符串
~/shell$ cat for.sh
#!/bin/bash
for test in welcome to China
do
echo "The test is $test"
done
~/shell$ sh for.sh
The test is welcome
The test is to
The test is China
或者采用以下代码实现,下面的代码更灵活、实用性更强。
~/shell$ cat for.sh
#!/bin/bash
echo "print each parameter from \"\$*\""
for var in "$*"
do
#echo "$var"
echo $var
done
echo "print each parameter from \"\$@\""
for var in "$@"
do
#echo "$var"
echo $var
done
~/shell$ bash for.sh 120 56 string a to
print each parameter from "$*"
120 56 string a to
print each parameter from "$@"
120
56
string
a
to
实例2:输出1~5
~/shell$ cat for.sh
#!/bin/bash
#seq参数用于生成一个序列
for i in $(seq 1 5)
do
echo $i
done
~/shell$ sh for.sh
1
2
3
4
5
或者采用以下代码实现
~/shell$ cat for.sh
#!/bin/bash
#seq参数用于生成一个序列
for i in {1..5}
do
echo $i
done
~/shell$ bash for.sh
1
2
3
4
5
~/shell$ sh for.sh
{1..5} #为何会出错?
此处有一个疑问,采用sh进行命令执行为何会出错,而bash命令正常执行。
实例3:输出1~5 的和
~/shell$ cat for.sh
#!/bin/bash
sum=0 #给sum赋初值
for i in {1..5} #此处同样可以采用seq生成一个序列
do
sum=$(($sum+$i)) #求和
done
echo $((sum)) #输出sum的值
~/shell$ bash for.sh
15
今天先写这些吧,之后再补充,希望对初学者有一些帮助。