Bash 条件判断与流程控制相关语句详解

介绍 if case 等语句。

条件判断语句

字符串判断

str1 = str2    当两个字符串有相同内容、长度时为真

str1 != str2   当字符串 str1 和 str2 不等时为真

-n str1      当字符串的长度大于 0 时为真(串非空)

-z str1      当字符串的长度为 0 时为真(空串)

str1        当字符串 str1 为非空时为真

数值的判断

int1 -eq int2   两数相等为真

int1 -ne int2   两数不等为真

int1 -gt int2   int1 大于 int2 为真

int1 -ge int2   int1 大于等于 int2 为真

int1 -lt int2   int1 小于 int2 为真

int1 -le int2   int1 小于等于 int2 为真

文件相关的判断语句

-r file     用户可读为真

-w file     用户可写为真

-x file     用户可执行为真

-f file     文件为普通文件为真

-d file     文件为目录为真

-c file     文件为字符特殊文件为真

-b file     文件为块特殊文件为真

-s file     文件大小非 0 时为真

-t file     当文件描述符(默认为 1 )指定的设备为终端时为真

逻辑判断

-a   与

-o  或

!   非

if

基本结构

if [ 条件判断 ]; then
do something here
elif [ 条件判断 ]; then
do another thing here
else
do something else here
fi

或者

if [ 条件判断 ]
then
 Command
else
 Command
fi

举例如下

# 获取操作系统类型
SYSTEM=`uname -s`

# [] 内两边必须有空格
# if 与 then 在同一行,判断语句后加上 ;

if [ $SYSTEM = "Linux" ];then
echo "Linux"
else
echo "OS is not Linuix"
fi

# 写在一行

if [ $SYSTEM = "Linux" ];then echo "Linux"; else echo "OS is not Linuix"; fi

也可以写成

SYSTEM=`uname -s`

if [ $SYSTEM = "Linux" ]
then
echo "Linux"
else
echo "OS is not Linuix"
fi

case

基本结构

case $1 in
  模式1 )
  命令序列1
  ;;

  模式2 )
  命令序列2
  ;;

  * )
  默认执行的命令序列
  ;;
esac

for

for (( i = 0; i < 10; i++ )); do
  #statements
done

for in

for arg in "$@"
do
  echo $arg
done

while

while [[ condition ]]; do
  #statements
done

until

until [[ condition ]]; do
  #statements
done

参考链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏爱撒谎的男孩

Struts2之获取请求参数

35560
来自专栏Java帮帮-微信公众号-技术文章全总结

Java设计模式-组合模式

组合模式: 将对象组合成树形结构以表示‘部分-整体’的层次结构, 使得用户对单个对象和组合对象的使用具有一致性. 解析 组合模式描述了如何将容器和叶子节点进行...

38160
来自专栏IT可乐

Java IO详解(三)------字节输入输出流

 File 类的介绍:https://cloud.tencent.com/developer/article/1012532 Java IO 流的分类介绍:ht...

253100
来自专栏漫漫全栈路

ASP.NET MVC 行为详解

前面分别介绍了MVC中的三个重要部分,而行为,则是其中C-Controller中的重要内容,下面详解一二。 一般继承自Controller类,类Controll...

28640
来自专栏积累沉淀

Linux之grep和egrep命令总结

grep / egrep 语法: grep  [-cinvABC]  'word'  filename -c :打印符合要求的行数 -i :忽略大小写 ...

195100
来自专栏Java技术分享圈

Java的数据库连接工具类的编写

17840
来自专栏desperate633

Java动态代理与静态代理静态代理动态代理

我们先看一个简单的例子,当我们需要程序中加入方法执行的日志信息的时候,很显然我们最容易想到的实现方法,就是在方法前后插入日志记录信息。

16020
来自专栏陈树义

BitMap 算法

什么是 BigMap 算法 所谓 BitMap 就是用一个 bit 位来标记某个元素对应的 value,而 key 即是这个元素。由于采用bit为单位来存储数据...

52960
来自专栏微信公众号:Java团长

Java基础知识详细总结

ClassLoader使用的是双亲委托模型来搜索类的,每个ClassLoader实例都有一个父类加载器的引用(不是继承的关系,是一个包含的关系),虚拟机内置的类...

14830
来自专栏Java学习之路

02 Spring框架 简单配置和三种bean的创建方式

整理了一下之前学习Spring框架时候的一点笔记。如有错误欢迎指正,不喜勿喷。 上一节学习了如何搭建SpringIOC的环境,下一步我们就来讨论一下如何利...

32550

扫码关注云+社区

领取腾讯云代金券