shell编程之循环语句
Posted 睡着的冰淇淋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之循环语句相关的知识,希望对你有一定的参考价值。
for循环
语法结构
1、列表循环
列表for循环:用于将一组命令循环执行已知的次数
基本格式:
for variable in list
do
command
command
…
done
或者
for variable in a b c
do
command
command
done
语法结构举例说明:
[root@localhost shell]# for i in 1..5;do echo $i;done
1
2
3
4
5
[root@localhost shell]# for i in 1..5;do echo -n $i;done
12345[root@localhost shell]#
[root@localhost shell]#
[root@localhost shell]# for i in 1 2 3 4 5;do echo $i;done
1
2
3
4
5
[root@localhost shell]#
[root@localhost shell]# for i in a b c;do echo $i;done
a
b
c
[root@localhost shell]# for i in `seq 5`;do echo $i;done
1
2
3
4
5
2、不带列表循环
不带列表的for循环执行时由用户指定的参数和参数的个数决定循环次数
基本格式:
for variable
do
command
command
…
done
语法结构举例说明:
[root@localhost shell]# vim for.sh
[root@localhost shell]# cat for.sh
for var
do
echo $var
done
[root@localhost shell]# chmod +x for.sh
[root@localhost shell]# ./for.sh
[root@localhost shell]# ./for.sh a
a
[root@localhost shell]# ./for.sh a b
a
b
[root@localhost shell]# ./for.sh a b c
a
b
c
观察执行过程:
[root@localhost shell]# bash -x for.sh
[root@localhost shell]# bash -x for.sh a
+ for var in "$@"
+ echo a
a
[root@localhost shell]# bash -x for.sh a b
+ for var in "$@"
+ echo a
a
+ for var in "$@"
+ echo b
b
3、类C风格的for循环
for(( expr1;expr2;expr3 ))
do
command
command
…
done
for (( i=1;i<=5;i++))
do
echo $i
done
expr1:定义变量并赋初值
expr2:决定是否进行循环(条件)
expr3:决定循环变量如何改变,决定循环什么时候退出
语法结构举例说明:
[root@localhost shell]# for ((i=1;i<=5;i++));do echo $i;done
1
2
3
4
5
循环控制
循环体: do....done之间的内容
continue:继续;表示循环体内的代码不执行,重新开始下一次循环
break:打断;马上停止执行循环,执行循环体后面的代码
exit:退出;直接跳出程序
continue:
[root@localhost shell]# >for.sh
[root@localhost shell]# vim for.sh
[root@localhost shell]# cat for.sh
for i in 1..5
do
test $i -eq 2 && continue || touch /tmp/file$i
done
echo hello hahahah
[root@localhost shell]# ./for.sh
hello hahahah
[root@localhost shell]# ll /tmp/
总用量 0
-rw-r--r--. 1 root root 0 5月 6 07:04 file1
-rw-r--r--. 1 root root 0 5月 6 07:04 file3
-rw-r--r--. 1 root root 0 5月 6 07:04 file4
-rw-r--r--. 1 root root 0 5月 6 07:04 file5
drwxr-xr-x. 2 root root 53 5月 6 07:03 shell
break:
[root@localhost shell]# > for.sh
[root@localhost shell]# vim for.sh
[root@localhost shell]# cat for.sh
for i in 1..5
do
test $i -eq 2 && break || touch /tmp/file$i
done
echo hello hahahah
[root@localhost shell]# ./for.sh
hello hahahah
[root@localhost shell]# ll /tmp/
总用量 0
-rw-r--r--. 1 root root 0 5月 6 07:00 file1
drwxr-xr-x. 2 root root 53 5月 6 07:00 shell
exit:
[root@localhost shell]# >for.sh
[root@localhost shell]# vim for.sh
[root@localhost shell]# cat for.sh
for i in 1..5
do
test $i -eq 2 && exit || touch /tmp/file$i
done
echo hello hahahah
[root@localhost shell]# ./for.sh
[root@localhost shell]# ll /tmp/
总用量 0
-rw-r--r--. 1 root root 0 5月 6 07:06 file1
drwxr-xr-x. 2 root root 53 5月 6 07:05 shell
举例说明
例1:计算1到100的奇数之和,方法不止一种
思路:
1. 定义一个变量来保存奇数的和 sum=0
2. 找出1-100的奇数,保存到另一个变量里 i
3. 从1-100中找出奇数后,再相加,然后将和赋值给sum变量
4. 遍历完毕后,将sum的值打印出来
脚本:
#定义一个变量来保存奇数的和
sum=0
#打印1-100的奇数并且相加重新赋值给sum
for i in 1..100..2
do
sum=$[ $i + $sum ]
done
#打印1-100的奇数和
echo "1-100的奇数和为:$sum"
#定义一个变量来保存奇数的和
sum=0
#打印1-100的奇数并且相加重新赋值给sum
for (( i=1;i<=100;i+=2))
do
let sum=sum+$i
或者
let sum=sum+i
或者
let sum=$sum+$i
done
#打印1-100的奇数和
echo "1-100的奇数和为:$sum"
sum=0
for ((i=1;i<=100;i++))
do
if [ $[$i%2] -ne 0 ];then
let sum=$sum+$i
fi
或者
test $[$i%2] -ne 0 && let sum=$sum+$i
done
echo "1-100的奇数和是:$sum"
sum=0
for ((i=1;i<=100;i++))
do
[ $[$i%2] -eq 0 ] && true || let sum=sum+$i
done
echo "1-100的奇数和是:$sum"
延伸:
true 真
: 真
false 假
sum=0
for ((i=1;i<=100;i++))
do
if [ $[$i%2] -eq 0 ];then
continue
else
let sum=$sum+$i
fi
done
echo "1-100的奇数和为:$sum"
sum=0
for ((i=1;i<=100;i++))
do
test $[Shell编程之循环语句