[转帖]总结:shell中的if条件判断

总结,shell,if,条件,判断 · 浏览次数 : 0

小编点评

**一、if 的基本语法** ```bash if [ command ];then # 命令执行成功时执行的代码 fi ``` **二、常见的一些写法案例** 1. 检查字符串是否为空: ```bash if [ -z "$str" ]; then echo "字符串为空" fi ``` 2. 检查字符串是否不为空: ```bash if [ -n "$str" ]; then echo "字符串不为空" fi ``` 3. 检查字符串是否相等: ```bash if [ "$str1" = "$str2" ]; then echo "字符串相同" fi ``` 4. 检查字符串是否不相同: ```bash if [ "$str1" != "$str2" ]; then echo "字符串不同" fi ``` 5. 检查字符串是否为空或非空: ```bash if [ -z "$str" -o -n "$str" ]; then echo "字符串为空或非空" fi ``` 6. 检查数字是否相等: ```bash if [ ${num1} -eq ${num2} ]; then echo "num1 和 num2 相等" fi ``` 7. 检查数字是否不等于: ```bash if [ ${num1} -ne ${num2} ]; then echo "num1 和 num2 不相等" fi ``` 8. 检查数字是否大于或等于: ```bash if [ ${num1} -gt ${num2} ]; then echo "num1 大于 num2" fi ``` 9. 检查数字是否大于等于或等于: ```bash if [ ${num1} -ge ${num2} ]; then echo "num1 大于或等于 num2" fi ``` 10. 检查数字是否小于: ```bash if [ ${num1} -lt ${num2} ]; then echo "num1 小于 num2" fi ```

正文

一、if 的基本语法

  1. if [ command ];then
  2. xxx
  3. elif [ command ];then
  4. xxx
  5. else
  6. xxx
  7. fi

 二、常见的一些写法案例

1、if [ "x${var}" = "x" ]

其实就是判断${var}是否为空的意思

2、if [ X"$?" == X"0" ]

其实就是判断$?是否为0,即判断执行结果是否正确

3、 if [ ! -x "$PRGDIR"/ "$EXECUTABLE" ]; then  #!是非条件,即非(-x "$PRGDIR"/ "$EXECUTABLE")是否为真。总体含义是 判断脚本catalina.sh是否存在并有可执行权限,没有执行权限就退出。

4、[ -z "$CATALINA_HOME" ]: -z   在中括号中判断字符串变量的值是否为空,为空则为真。

5、-d filename:如果 filename为目录,则为真,作用比如判断目录是否存在

如下,判断run_dir目录是否存在:

三、文件和目录的判断

  1. ------------------------- 常用的-----------------------------------------------
  2. [ -e file ] 如果 file 存在,则为真。
  3. [ -d DIR ] 如果 file 存在且是一个目录,则为真。
  4. [ -f file ] 如果 file 存在且是一个普通文件,则为真。
  5. [ -r file ] 如果 file 存在且是可读的,则为真。
  6. [ -w file ] 如果 file 存在且是可写的,则为真。
  7. [ -x file ] 如果 file 存在且是可执行的,则为真。
  8. [ -s file ] 如果 file 存在且大小不为0,则为真。
  9. [ -L file ] 如果 file 存在且是一个符号连接,则为真。
  10. [ -h file ] 如果 file 存在且文件是软链接,则为真。
  11. [ file1 -ot file2 ] 如果 file1file2 要老, 或者 file2 存在且 file1 不存在,则为真。
  12. [ file1 -nt file2 ] 如果 file1file2 要新,则为真。
  13. ------------------------- 以下不太常用 --------------------------------------------
  14. [ -b file ] 如果 file 存在且是一个块特殊文件,则为真。
  15. [ -c file ] 如果 file 存在且是一个字特殊文件,则为真。
  16. [ -g file ] 如果 file 存在且已经设置了SGID,则为真。
  17. [ -k file ] 如果 file 存在且已经设置了粘制位,则为真。
  18. [ -p file ] 如果 file 存在且是一个名字管道(F如果O),则为真。
  19. [ -t FD ] 如果文件描述符 FD 打开且指向一个终端,则为真。
  20. [ -u file ] 如果 file 存在且设置了SUID (set user ID),则为真。
  21. [ -O file ] 如果 file 存在且属有效用户ID,则为真。
  22. [ -G file ] 如果 file 存在且属有效用户组,则为真。
  23. [ -N file ] 如果 file 存在 and has been mod,如果ied since it was last read则为真。
  24. [ -S file ] 如果 file 存在且是一个套接字,则为真。
  25. [ file1 -ef file2 ] 如果 file1file2 指向相同的设备和节点号,则为真。

四、字符串的判断

字符串批较时,变量一定要用 双引号。

  1. [ -z "str" ] 如果str的长度为零,则为真 ,即判断是否为空,空即是真;
  2. [ -n "str" ] 如果str的长度非零,则为真 ,即判断是否为非空,非空即是真;
  3. [ "str1" = "str2" ] 如果两个字符串相同,则为真;
  4. [ "str1" != "str2" ] 如果字符串不相同,则为真;
  5. [ "str1" ]  如果字符串不为空,则为真,与-n类似。

案例:

  1. if [ -z "$path" ]; then
  2. echo "path不能为空,请指定path"
  3. fi
  4. if [ "$opt" != "-" ]&&[ "$opt" != "+" ]; then
  5. echo "opt只能取值-或+" 1>&2
  6. exit 1;
  7. fi

五、数值比较

数值的比较千万不要使用大于号、小于号,数值的比较只能使用 -eq 、-gt 等。

  1. [ num1 -eq num2 ] num1 和 num2 两数相等为真 , =
  2. [ num1 -ne num2 ] num1 和 num2 两数不等为真 ,!=
  3. [ num1 -gt num2 ] num1 大于 num1 为真 , >
  4. [ num1 -ge num2 ] num1 大于等于num2 为真, >=
  5. [ num1 -lt num2 ] num1 小于n um2 为真 , <
  6. [ num1 -le num2 ] num1 小于等于 num2 为真, <=

案例:

  1. if [ ${num1} -gt ${num2} ]; then
  2. echo "[相对目录]的长度应该小于[文件路径]的长度"
  3. exit 1
  4. fi

注:本文引用的是:shell 语言中的 if 条件判断_猎人在吃肉的博客-CSDN博客_shellif判断

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux31510 人正在系统学习中

与[转帖]总结:shell中的if条件判断相似的内容:

[转帖]总结:shell中的if条件判断

一、if 的基本语法 if [ command ];then xxxelif [ command ];then xxxelse xxxfi 二、常见的一些写法案例 1、if [ "x${var}" = "x" ] 其实就是判断${var}是否为空的意思 2、if [ X"$?" == X"0" ]

[转帖]Linux Shell:date日期时间操作

https://www.jianshu.com/p/cc9ebb212a8e 整理Linux Shell脚本中常用的日期操作,给予date命令,主要用法总结 获得当前日期,时间戳,date,date '+%s' 日期解析(字符串转日期,时间戳转日期)date -d 日期格式化输出,date '+%'

[转帖]Linux中执行shell脚本的4种方法总结

https://www.jb51.net/article/53924.htm 这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下 bash shell 脚本的方法有多种,现在作个小结。假设我们编写好的shell脚本的文件

[转帖]连shell的基本输出都不会,还写什么脚本?echo和printf命令总结

https://zhuanlan.zhihu.com/p/438957797 在 Linux 系统中使用 echo 命令和 printf 命令都可以实现信息的输出功能,下面我们分别看这两个命令的应用案例。 echo 1.使用 echo 命令创建一个脚本文件菜单功能描述:echo 命令主要用来显示字符

[转帖]Linux中./configure、make、make install命令详解

简单来说,make 是编译,make install 是安装。 总结:linux编译安装中configure、make和make install各自的作用 • ./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。

[转帖]linux-shell总结(没事一看)

https://blog.51cto.com/wangaimin/1895607 !脚本执行与调试 1、绝对路径执行,要求文件有执行权限 2、以sh命令执行,不要求文件有执行权限 3、.加空格或source命令执行,脚本将在当前shell中执行 4、检查脚本语法 bash -v test.sh 5、

[转帖]Linux Shell 脚本的 10 个有用的“面试问题和解答”

http://blog.itpub.net/31545813/viewspace-2926667/ Linux 的浩瀚无垠,使人总能每次都提交与众不同的内容。这些内容不仅对他们的职业生涯很有用,同时也让他们增长知识。在此,我们就尝试这么去做,至于能取得多大的成功,就由我们的读者朋友们来判断吧。 在此

[转帖]总结:Springboot监控Actuator相关

一、介绍 由于项目中使用的仍然是比较老旧的1.5.6版本,所以本文是基于此版本进行描述。 二、Actuator使用 ActuatorActuator是Spring Boot提供的对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans信息、系统

[转帖]总结:正则表达式

一、重要点整理 ^ 为匹配输入字符串的开始位置。 [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。[^…] 排除型字符组。 abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。 正则表达式由两种字符构成。一种是在正则表达式中具体特殊意义的“元字符

[转帖]总结:nginx502:Tomcat调优之acceptCount

问题背景:UI页面点击会偶尔返回error,检查调用日志,发现nginx报502报错,因此本文即排查502报错原因。 如下红框可知,访问本机个备机的服务502了,用时3秒左右(可见并不是超时) 先给出原因:是因为tomcat8默认的acceptCount是100,请求量大的时候,会将一些来不及处理的