第一,for循环
案例一:
判断家目录下是否有backup目录,没有则创建
将ls命令的结果放入flist 作为for循环的参数集
当在可执行文件后输入一个参数时,判断参数是否在for循环的参数集中,如果在,就提示文件找到了,如果不在就直接退出程序
如果输入的参数不是1个,将 ls 列出的文件和目录全部复制到backup中去
#!/bin/bash
if [ ! -d $HOME/backup ]
then
mkdir $HOME/backup
fi
flist=`ls`echo "$flist"
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++"for file in $flist
do
if [ $# = 1 ]
then
if [ $1 = $file ]
then
echo "$file found"
exit
fi
else
cp $file $HOME/backup
echo "$file copied"
fi
doneecho "copleted"
输入5个以上的数,循环输出时单数输出“奇数” 偶数直接输出
注:当大于5个参数时,5个往后默认为一个数,shell中变量只有字符串
1 #!/bin/bash
2
3 if [ $# -lt 5 ]
4 then
5 echo "arguemnets is not enough"
6 exit
7 fi
8
9 for i
10 do
11 if [ `expr $i % 2` -eq 1 ]
12 then
13 echo "jishu"
14 else
15 echo "$i"
16 fi
17 done
第二,while循环
通过while循环控制 输入5次分数进行ABC评级
#!/bin/bash
i=0
while [ $i -lt 5 ]
do
i=`expr $i+1`echo "please input score"
read Sscore=`expr $S / 10`
case $score in
9|10)
echo "A"
;;
6|7|8)
echo "B"
;;
*)
echo "c"
esac
done
生成5个空白文件
#!/bin/bash
i=0
echo -n "please input a num"
read S
while [ $i -lt $S ] 切记:运算符前后要有空格
do
i=`expr $i + 1`
>FILE$i
done
乘法口诀 注:echo -e "\n" 是换行
#!/bin/bash
multiplica(){
i=1
while [ $i -lt 10 ]
do
j=1
while [ $j -lt 10 ]
do
if [ $j -le $i ]
then
mul=`expr $i \* $j`
echo -n "$j*$i = $mul "
j=`expr $j + 1`
else
break
fi
done
echo -e "\n"
i=`expr $i + 1`
done
}multiplica
#echo $?
第三,循环控制语句(break :跳出整个循环/ continue:跳出一层循环)
break:
break n:循环n次跳出
输入5个以上的数,循环输出时单数输出“奇数 x” 偶数直接跳出整个循环
注:当大于5个参数时,5个往后默认为一个数,shell中变量只有字符串
1 #!/bin/bash
2
3 if [ $# -lt 5 ]
4 then
5 echo "arguemnets is not enough"
6 exit
7 fi
8
9 for i
10 do
11 if [ `expr $i % 2` -eq 1 ]
12 then
13 echo "jishu:$i"
14 else
15 break
16 fi
17 done
continue:
输入5个以上的数,循环输出时单数输出“奇数 x” 偶数直接跳出当前循环
注:当大于5个参数时,5个往后默认为一个数,shell中变量只有字符串
1 #!/bin/bash
2
3 if [ $# -lt 5 ]
4 then
5 echo "arguemnets is not enough"
6 exit
7 fi
8
9 for i
10 do
11 if [ `expr $i % 2` -eq 1 ]
12 then
13 echo "jishu:$i"
14 else
15 continue
16 fi
17 done