Linux shell条件表达式

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"
  • Shell终端中逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令

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

huanyu@ubuntu:~/shell$ [ $USER = root ] || echo "user"
  • 逻辑“或”,它在Linux系统中的运算符号为 ||,表示当前面的命令执行失败后才会执行它后面的命令

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

huanyu@ubuntu:~/shell$ [ $USER != root ] || echo "administrator"
  • 第三种逻辑语句是“非”,在Linux系统中的运算符号是一个叹号( ! ),它表示把条件测试中的判断结果取相反值

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"
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,057评论 0 13
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,310评论 0 5
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 7,938评论 1 19
  • 端午,让我们来一场与杨梅的邂逅 原创不易,未经允许,请勿转载! 远望山边点点红,五月杨梅正当时。 五月杨梅已满林,...
    清竹幽雅阅读 608评论 0 0
  • 撤回爱的后果 撤回爱无论是在孩子犯错或者调皮的时候告诉孩子不听话或者是留下孩子一个人来作为惩罚,都是在用孩子需要家...
    13号Nicole阅读 289评论 1 1