您的位置:首页 > 运维架构 > Shell

shell学习(2)-控制语句(if、case)

2015-12-21 14:13 567 查看
shell控制语句

1、if语句

(1)if....then 结构

if 测试条件

then 语句1

fi

(2)if...then..else结构

if 测试条件

then 语句1

else 语句2

fi

(3)if..then..elif...then...else结构

if 测试条件

then 语句1

elif 测试条件

then 语句2

else 语句3

fi

重要的是编写测试条件,有3种形式:

(1)用test命令;

(2)用[]方括号将测试条件括起来;

(3)用[[条件表达式]],条件表达式用来测试文件的属性和进行字符串比较。

对于test原型是:test 表达式

test一般与系统运算符搭配起来使用,它可以与如下四类运算符共同使用。

1)字符串测试符

-z s1 ,如果字符串s1的长度为0,则测试条件为真。

-n s1,如果字符串s1的长度大于0,则测试条件为真。

s1,如果s1不是空字符串,则测试条件为真。

s1 = s2,s1 等于s2,则真。

s1 != s2 ,s1 < s2,s1 > s2。注:=、 != 、< 、 > 在使用时,两边加空格。

#!/bin/sh

echo please input your name:

read name

if test -n name

then

echo "name is: "$name

else

echo "name is null"

fi

运行结果:

please input your name:

yuanli

name is: yuanli

2)数值测试运算符

n1 -eq n2 整数n1等于n2

n1 -ne n2 整数n1不等于n2

n1 -lt n2 整数n1小于n2

n1 -le n2 整数n1小于或等于n2

n1 -gt n2 整数n1大于n2

n1 -ge n2 整数n1大于或等于n2

3)逻辑运算符

也就是经常用到的与、或、非

!非

-a 逻辑“与”

-o 逻辑“或”

4)文件运算符:测试文件或目录的操作

-r 文件名, 若文件存在并且可读

-w 文件名,若文件存在并且可写

-x 文件名,若文件存在并且可执行

-f 文件名,若文件存在并且是普通文件

-d 文件名,若文件存在并且是目录文件

-p 文件名,若文件存在并且是命名的FIFO文件

-b 文件名,若文件存在并且是块设备文件

-c 文件名,若文件存在并且是字符设备文件

-s 文件名,若文件存在并且是文件的长度大于0

-t 文件描述字,若文件被打开并且文件描述字是与终端设备相关的。

2、case语句

case 字符串 in

模式串表达式1) 语句1;;

模式串表达式2) 语句2;;

esac

注:一个模式表达式可以包含多个模式串,但要用“|”隔开。

#!/bin/sh

echo please input your name

read name

case $name in

tom | jim)

echo your name is tom

;;

yuanli)

echo your name is yuanli

;;

*)

echo i do not know your name

;;

esac
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: