LinuxLinux学习之路我用 Linux

Linux shell条件表达式

2018-11-04  本文已影响3人  黄一倚
Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回其他随机数值。

按照测试对象来划分,条件测试语句可以分为4种:

文件测试语句;
逻辑测试语句;
整数值比较语句;
符串比较语句。

文件测试

文件测试即使用指定条件来判断文件是否存在或权限是否满足等情况的运算符

例子

1、判断/etc/fstab是否为一个目录类型的文件,然后通过Shell解释器的内设$?变量显示上一条命令执行后的返回值。如果返回值为0,则目录存在;如果返回值为非零的值,则意味着目录不存在。

huanyu@ubuntu:~/shell$ [ -d /etc/fstab ]
huanyu@ubuntu:~/shell$ echo $?

结果返回 1 ,表示这个文件不是目录。

2、判断/etc/fstab是否为一般文件,如果返回值为0,则代表文件存在,且为一般文件

huanyu@ubuntu:~/shell$ [ -f /etc/fstab ]
huanyu@ubuntu:~/shell$ echo $?

3、判断/dev/cdrom文件是否存在,若存在则输出Exist

huanyu@ubuntu:~/shell$ [ -e /etc/fstab ] && echo "Exist"

4、判断当前登录的用户是否为非管理员身份

huanyu@ubuntu:~/shell$ [ $USER = root ] || echo "user"

5、判断当前用户是否为一个非管理员的用户

huanyu@ubuntu:~/shell$ [ $USER != root ] || echo "administrator"

6、综合应用:判断用户类型

huanyu@ubuntu:~/shell$ [ $USER != root ] && echo "user" || echo "administrator"

整数比较

整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作,而且不能想当然地使用日常生活中的等号、大于号、小于号等来判断。因为等号与赋值命令符冲突,大于号和小于号分别与输出重定向命令符和输入重定向命令符冲突。

例子

1、判断10是否等于15

huanyu@ubuntu:~/shell$ [ 10 -eq 15 ] 
huanyu@ubuntu:~/shell$ echo $?

返回是 1 ,说明表达式的值为错

字符串比较

字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。它经常用来判断某个变量是否未被定义(即内容为空值)。

例子

1、判断String变量是否为空值

huanyu@ubuntu:~/shell$ [ -z $String ]
huanyu@ubuntu:~/shell$ echo $?

返回 0 , 说明这个字符串未定义

2、判断当前系统语言的值

huanyu@ubuntu:~/shell$ [ $LANG != "en.US" ] && echo "Not en.US"
上一篇下一篇

猜你喜欢

热点阅读