转载]Linux 编写shell脚本(2)if for while

来源:互联网 发布:冬天帽子 知乎 编辑:程序博客网 时间:2024/06/04 23:31

使用if条件语句

If语句好处:可以根据特定条件来决定是否执行某项操作,当满足不同条件时执行不同操作,

相关条测试操作

test  条件表达式

 条件表达式  ]  [ ] 方括号与条件表达式需要用空格进行分隔

1.       测试文件状态

ü  -d   是否为目录

ü  -e   文件是否存在

ü  -f   是否为文件

ü  -r   是否有读取的权限

ü  -w  是否有写入权限

ü  -x   是否有执行权限

ü  -L   是否为链接文件

2.       整数值比较

ü  -eq   等于

ü  -ne   不等于

ü  -gt    大于

ü  -lt    小于

ü  -le    小于等于

ü  -ge   大于等于

3.       字符串比较

ü  =     匹配

ü  !=   不匹配

ü  -z    是否为空

ü  !   用于取反

4.       逻辑测试

ü  &&  逻辑与(前后两个条件都为真时,结果才为真)

ü  ||   逻辑或(有一个条件成立,结果即为真)

ü  !   逻辑非(指定条件不成立,结果为真)

if 语句的结构

1.单分支的if语句

if  条件测试命令

then

命令序列

fi

条件成立

执行then后一条或多条命令(命令序列)

直到fi 表示结束

条件不成立

直接执行fi

 

条件成立

执行then后的一条或多条命令(命令序列)

条件不成立

执行else后的一条或多条命令

直到fi

2.双分支的if语句

 

if   条件测试命令

then

命令序列1

else

命令序列2

fi

条件成立

执行then后的一条或多条命令(命令序列)

条件不成立

执行else后的一条或多条命令

直到fi

 

3.多分支的if语句(更多使用case语句来实现)

 

根据if语句条件测试命令的两种状态分别进行操作,嵌套使用,

条件1为真:执行then后的命令直到fi

条件1为假:执行elif后的条件2

条件2为真,执行命令2,直到fi

为假,执行else后的命令3直到fi

if  条件测试命令1

 

then

命令序列1

elif  命令测试条件2

then

命令序列2

else

命令序列3

fi

根据if语句条件测试命令的两种状态分别进行操作,嵌套使用,

条件1为真:执行then后的命令直到fi

条件1为假:执行elif后的条件2

条件2为真,执行命令2,直到fi

为假,执行else后的命令3直到fi

 

 

将case后边的变量只与模式1、模式2 ………..等进行逐一比较,直到找到与之匹配的值,然后执行该模式下的命令序列,当遇到 ;;后跳转至esac后结束分支

4.case语句(适用于需要进行多重分支的情况)

 

case  变量值  in

模式1)

命令序列1

;;

模式2)

命令学列2

;;

.......... 

 *)

 esac

 

将case后边的变量只与模式1、模式2 ………..等进行逐一比较,直到找到与之匹配的值,然后执行该模式下的命令序列,当遇到 ;;后跳转至esac后结束分支

 

 

使用in关键字为用户自定义变量设置了一个取值列表(以空格分隔的多个值),for语句第一次执行时,先将列表中的第一个值赋给变量,然后执行do后边的命令序列,再将第二个取值赋给该变量,然后执行do后边的命令序列,一直循环,直到列表中的所有值都已经用完,跳转至done

for语句结构

 

for   变量名  取值列表

do

命令序列

done 

使用in关键字为用户自定义变量设置了一个取值列表(以空格分隔的多个值),for语句第一次执行时,先将列表中的第一个值赋给变量,然后执行do后边的命令序列,再将第二个取值赋给该变量,然后执行do后边的命令序列,一直循环,直到列表中的所有值都已经用完,跳转至done

 

 

条件为真  执行do 后边的命令 然后返回到while再次判断,条件为真,继续执行do后的命令序列,直到条件为假,跳转到done语句,结束循环

while语句结构

 

while  条件测试命令

do

命令序列

done

条件为真  执行do 后边的命令 然后返回到while再次判断,条件为真,继续执行do后的命令序列,直到条件为假,跳转到done语句,结束循环

 

until循环

与while循环结构非常类似,只不过,until是当条件不成立时进行循环,

until  命令测试条件

do

命令序列

done

shift语句(迁移位置变量

执行shift命令后,位置变量($1 -----$9)中的参数会依次向左传递

循环控制语句

ü  break   中断:跳出当前所在的循环,并不跳出程序

ü  continue  继续:暂停本次循环,跳转至循环语句顶部重新测试条件

shell函数的定义和调用

ü  定义

Function  函数名 {

命令序列

}

函数名(){

命令序列

ü  调用:直接调用函数名称即可




0 0
原创粉丝点击