shell脚本编程-循环语句-for-while-break/continue

第一,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
done

echo "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 S

        score=`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

猜你喜欢

转载自blog.csdn.net/w6655515/article/details/82316925