Shell 其实并不常写,每次写的时候就总得查一下比较语句的语法该怎么写。本文章就作为笔记记录这些资料吧。
本文地址:https://segmentfault.com/a/1190000006097822

Reference

Shell数值、字符串比较
shell判断和比较
《 Linux程序设计(第4版)》

if-else 语法

if [ ${SOME_PARA} -eq ${ANOTHER_PARA} ]; then...
elif [ ${SOME_PARA} -eq "0" ]; then...
else...
fi

上面是一个典型的 if-else 语句语法结构。这里的条件是数值比较。保险情况下,注意各种空格:

  • 中括号与变量之间要空格
  • 两个参数和操作符 “-eq”之间要空格

then”可以单独起一行,比如:

if [ ... ]
then...
fi

while 语法

# -----------------------------------
while [ ... ]; do...
done# -----------------------------------
while [ ... ]
do...
done# -----------------------------------
until [ ... ]; do...
done# -----------------------------------
until [ ... ]
do...
done

While 的格式和 if-else 其实差不多,这里就不细说了。Until 的意思其实就是 while 的非。

Shell 常用变量

  • $n:命令的参数,比如$1$2等等。其中$0表示参数名,其实就是main()argv[0]
  • $#:命令参数的数量
  • $?:上一个命令的返回值
  • $$:当前shell程序的pid
  • $1:上一个程序的pid
  • $@:完整的参数列表

数值比较

  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -ge:大于等于
  • -lt:小于
  • -le:小于等于
  • <, <=, >, >=:这四个顾名思义。不过使用的时候要注意双括号,比如(("$a" < "$b"))。我建议还是用上面那些算了。

字符串比较

  • =:等于
  • !=:不等于
  • -z:字符串长度为零
  • -n:字符串不为空

文件判断

注:以下条件返回真的必要条件是目标要存在

  • -b:block,块设备
  • -c:char,字符设备
  • -d:directory,目录
  • -e:exist,存在,目录或问ijan
  • -f:file,是否一个普通文件
  • -g:目标是否设置了SGID位
  • -h:目标是否符号文件。老的系统可能不支持这一项
  • -k:目标是否设置了粘滞位
  • -p:pipe,是否管道
  • -r:readable,是否可读
  • -s:大小不为零
  • -u:目标是否设置了SUID
  • -w:writable,是否可写
  • -o:owned,是否为当前用户所拥有
  • -x:executable:是否可执行

如果要表示上述条件的“”,则加上“!”即可,如:

if [ ! -d ${SOME_DIR} ]; then...
fi

Linux shell 的条件 / 比较语法相关推荐

  1. linux shell 脚本编程基本语法

    linux shell脚本编程基本语法 Shell script是利用shell的功能所写的一个"程序",这个程序是使用纯文本文件,将一些Linux Shell的语法与命令(含外部 ...

  2. shell中条件判断语法与判断条件小结

    IF条件判断语法: if A then dosth elif B dosth else dosth fi 判断条件: 2.1 字符串判断 str1 = str2 当两个串有相同内容.长度时为真 str ...

  3. Linux shell的条件判断、循环语句及实例

    shell条件判断的两个特殊设备 /dev/null linux系统的空设备,也称为位桶,任何写入其中的数据均会被丢弃当你不想将标准化输出显示或者保存至文件时可以将文件从定向到/dev/null 禁止 ...

  4. linux shell 三元运算符,关于语法:Bash中的三元运算符(?:)

    有什么办法可以做这种事吗 int a = (b == 5) ? c : d; 使用BASH? @荷兰语的答案表明,bash确实有类似于"三元运算符"的东西,但是在bash中,这被称 ...

  5. Linux shell if条件判断1

    shell 逻辑控制语句:            分支判断结构        if        case      循环结构         for         while         un ...

  6. linux shell 之结构化语法

    一.case分支语句 语法格式: case $变量名 in模式1)命令序列1;;模式2)命令序列2;; *)默认执行的命令序列 ;; esac case代码实例 #!/bin/bash read -p ...

  7. linux shell的for循环语法是怎样的?

    答:如下: for ((i=0;i<100;i++))doecho "i=${i}"done 转载于:https://www.cnblogs.com/dakewei/p/10 ...

  8. Linux循环中累计数据,linux shell 读取for循环中出现难处理的数据之单引号错误实例...

    原语句: #!/bin/bash for test in I don't know if this'll work do echo "work:$test" done 结果: wo ...

  9. linux系统中shell脚本最全详解二shell条件判断语法介绍函数分析

    目录 一.shell判断句 1.if条件判断语句 2.test判断 二.语法介绍 1.shell运算符 2.shell循环语句 三.shell函数 一.shell判断句 1.if条件判断语句 if语法 ...

最新文章

  1. 论计算机的创新性,论计算机专业教学创新探索
  2. @程序员,第一批00后开始报考AI专业了
  3. 从JavaScript数组中获取随机项[重复]
  4. python安装勾选-Python的安装
  5. 【MATLAB】基本绘图 ( 线条设定 | 线条设定组合 )
  6. linux启动报错+centos关闭和开启ipv6
  7. Web API 实现JSONP或者安装配置Cors跨域
  8. phoneGap技术分析
  9. 现在流行的大前端是什么,自己需要了解哪里内容?
  10. 面试被问项目上线没_从面试官角度谈观察到的程序员技能瓶颈
  11. python求解最大子序列乘积问题,子序列可连续也可不连续
  12. 网络新手ip隐藏器_什么是高防IP,高防IP原理是什么
  13. nyoj810 贪心的嘿嘿(想弄死这出题的)
  14. Gilbert Strang的线性代数课程笔记-第一课
  15. [excel]解决Excel和txt转换出现的“问题
  16. 51单片机学习笔记【九】——红外通信实验
  17. 百度搜索开户竞价推广如何写出优质创意?
  18. 服务器信号标识是什么意思,手机信号栏的这些“符号”是什么意思,你知道吗?...
  19. 双端口USB Type-C控制器 CYPD6227 (CYPD6227-96BZXI)
  20. 5g空分复用技术_【从零开始学5G】空分复用与Pre5G

热门文章

  1. hibernate Day1 案例代码
  2. @media实现网页自适应中的几个关键分辨率
  3. 窗口封装类与Windows窗口实例的关系-3、CWnd如何处理窗口消息
  4. 用python绘制用例图源代码_Python设计模式 - UML - 用例图
  5. OSG仿真案例(1)
  6. 实验一 熟悉常用的Linux操作,实验2-熟悉常用的HDFS操作
  7. java中怎么把数字打印在屏幕上_java中如何打印出蜗牛形状的数字
  8. python编辑svg文件_如何修改pygal生成的svg文件背景色
  9. php保存文件的方法,php实现编辑和保存文件的方法
  10. 台风怎么看内存颗粒_【无趣】使用300多元的D4 16G内存是种什么体验