Shell脚本笔记(八)循环

循环

一、whlie和until循环

while循环基本语法:

while <条件表达式>
do 
    指令
done
#注意代码缩进

util循环基本语法:

until <表达式>
do
    指令
done
#与while的区别:不成立时进入循环,成立时终止循环

注意while条件表达式跟if的区别:if后的表达式是形如'[ a -eq b ]'这样的表达式,此时返回0为真,while后跟(( a < b)),返回1时为真。

# !/bin/bash
sum=1000
i=15
while ((sum>i))  #正确
do
    ((sum=sum-i))
    echo "The sum now is $sum"
done
echo "The money is less than $i pls add it"
# !/bin/bash
sum=1000
i=15
while [ $sum -gt $i ] #错误的写法
do
    ((sum=sum-i))
    echo "The sum now is $sum"
done
echo "The money is less than $i pls add it"

使用while按行读文件:

方法一:

exec <FILE
sum=0
while read line
do
    echo $line
done

方法二:使用cat读文件

cat filePath | while read line
do 
    cmd
done

方法三:结尾重定向

while read line
do
    cmd
done<$1

二、for与select循环

for循环语法:

语法一:

for 变量名 in 变量取值列表
do
   cmd
done

注意:"in 变量取值列表"可以省略,省略时相当于"in $@"

语法二(与C语言相识):

for((expr1;expr2;expr3))
do
    cmd
done

例子:

for num in 5 4 3 2 1
do
    echo $num
done

等同于

for num in {5..1}
do
    echo $num
done

批量更改当前目录下的文件名:

# !/bin/bash
for n in `ls`
do
    mv $n `echo $n|cut -d . -f1`.gif
done

 

select 循环语句主要用来打印菜单

# !/bin/bash                       
select name in tang jia pi 777 bear
do                                 
    echo $name                     
done                               

in后面也可以接命令结果或者数组

 

posted @ 2018-07-05 11:31  Shadowplay  阅读(155)  评论(0编辑  收藏  举报