100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > if语句 逻辑表达式 运算符

if语句 逻辑表达式 运算符

时间:2018-08-14 07:24:53

相关推荐

if语句 逻辑表达式 运算符

逻辑值,0为真,非0为假

在shell中,一个逻辑表达式的逻辑值是真是假用0和非0来表示,其中0表示真,非0表示假。

逻辑表达式的逻辑值只能是正数,不能是其他的类型。

测试逻辑表达式的值

在shell中,测试一个逻辑表达式的值有两种方法,一种是使用test命令来测试,另一种是使用中括号[](建议使用中括号)。

1、test expression

2、[ expreesion ]

在第2中结构中,符号[是启动测试命令,要求在expreesion 后面要有一个]与其配对,同时中括号与expreesion 要有空格,最后整个表达式逻辑值0表示真,非0表示假。

演示示例:

test 3 -eq 5 #判断3是否等于5

echo $? #输出结果,为假

1

test 3 -eq 3 #判断3是否等于3

echo $? #输出结果,为真

0

测试文件类型

-e :判断文件或目录是否存在,如:[ -e /etc/passwd ]

-f :判断文件是否存在而且为普通文件,如:[ -f /etc/passwd ]

-d:判断目录是否存在,如:[ -d /etc/ ]

-r :判断文件是否可读, 如:[ -r /etc/passwd ]

-w :判断文件是否可写,如:[ -w /etc/passwd ]

-x :判断文件是否可执行,如:[ -x /etc/passwd ]

-L :判断文件是否是符号链接文件,如:[ -x /etc/passwd ]

-c :判断文件是否是字符文件,如:[ -x /etc/passwd ]

-b :判断文件是否是块文件,如:[ -b /dev/null ]

测试字符串

-z :判断字符变量值是否为空,变量值为空,返回0为true,变量值非空,返回1为false,变量要用双引号括起来,如:[ -z “name"]−n:判断字符变量值是否为空,变量值为空,返回1为false,变量值非空,返回0为true,变量要用双引号括起来,如:[−n"name" ] -n :判断字符变量值是否为空,变量值为空,返回1为false,变量值非空,返回0为true,变量要用双引号括起来,如:[ -n "name"]−n:判断字符变量值是否为空,变量值为空,返回1为false,变量值非空,返回0为true,变量要用双引号括起来,如:[−n"name” ]

string1 = string2 :测试两个字符串是否相等,注意等号两边有空格,如:[ “hhjshds” = “sdswd”]、[ “string1"="string1" = "string1"="string2”]

string1 != string2 :测试两个字符串不相等,注意等号两边有空格,如:[ “hhjshds” != “sdswd”]、[ “string1"!="string1" != "string1"!="string2”]

测试数值

-eq :Equal, 相等, 如 [ num1 -eq num2 ]

-ne :Not Equal , 不相等, 如 [ num1 -ne num2 ]

-lt :Lesser Than, 小于, 如 [ num1 -lt num2 ]

-le :Lesser or Equal, 小于等于, 如 [ num1 -le num2 ]

-gt :Greater Than, 大于, 如 [ num1 -gt num2 ]

-ge :Greater or Equal, 大于等于, 如 [ num1 -ge num2 ]

(大于符号>、小于符号<)

逻辑运算符

-a :与的关系,两个expression同时为真则表达式为真,如 [ expression1 -a expression2 ]

-o :或的关系,两个expression有一个为真则表达式为真,如 [ expression1 -o expression2 ]

!:取反,expression若为真,则整个表达式为假,expression若为假,则整个表达式为真,如 [ !expression ]

分号;

Linux中分号表示一条命令的结束,默认回车符也是一条命令的结束,如下:

[root@localhost~]# ls -al ;echo “I am good boy” #使用了符号,当然如果你想连接两条命令还可以使用&&符号

if语句结构

结构1、

if [ expreesion ]

then

commands

elif [ expreesion ]

then

command

else

commands

fi

为了美观,我还可以把then放在与if同一行,但要加分行,如下:

结构2、

if [ expreesion ] ;then

commands

elif [ expreesion ] ;then

command

else

commands

fi

小结:elif语句和else语句不是必须的;if语句是可以嵌套的,即在任何位置都可以再嵌套一个if语句;if语句结尾要用fi来表示结束。

if语句的执行顺序

先判断第一个if 表达式的逻辑值,如果为true,则执行对应的commands后直接结束整个if语句,如果为false,则继续判断elif 语句,遇到elif 语句表达式为true的就进入执行对应的commands,执行完就结束掉整个if语句,如果elif 语句表达式都判断完了也没有true的,则就执行else语句对应的commands,然后就结束整个语句了。

演示示例:

if [ -f /etc/passwd ];then

ehco “这是一个密码文件”

else

echo "糟了,文件不存在’

#!/bin/bash

read -p “请输入一个整数:” num

if [ $num -ge 80 -a num−le100];thenecho"这个数大于或等于80,小于或等于100."echo"是的,这个数是:num -le 100 ];then echo "这个数大于或等于80,小于或等于100." echo "是的,这个数是:num−le100];thenecho"这个数大于或等于80,小于或等于100."echo"是的,这个数是:{num}"

elif [ $num -ge 50 -a num−le100];thenecho"这个数大于或等于50,小于或等于79."echo"是的,这个数是:num -le 100 ];then echo "这个数大于或等于50,小于或等于79." echo "是的,这个数是:num−le100];thenecho"这个数大于或等于50,小于或等于79."echo"是的,这个数是:{num}"

elif [ num−le49];thenecho"这个数小于或等于49."echo"是的,这个数是:num -le 49 ];then echo "这个数小于或等于49." echo "是的,这个数是:num−le49];thenecho"这个数小于或等于49."echo"是的,这个数是:{num}"

else

echo “这个数大于100”

echo “这个数是:${num}”

fi

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。