bash语法之条件判断

通过一个if语句里的对某个特定的条件给予索要结果。当出现某种结果是我们希望程序在这种特定的结果下做些什么事情,就在该语句下写出来。反之就不能进行某些操作;这个和我们生活中遇到的事情是一样的。

    例如:今天10号到了每月要发薪水的时间了,财务需要做一个if判断了,索要条件的结果如下:
    if 条件1:账户里有钱吗?√满足&&条件2:老板让发薪水吗?√满足&&条件3:财务是否知道每个人的银行信息满足!
        语句1:今天发薪水!
    结束:
条件表示式里的各种原因并不在判断语句考虑的范围之内,只对结果是否满足加以考虑。什么意思呢? 就是说在这个if判断里面,条件1:对于钱怎么来的不加以考虑,关键是是否有钱;条件2:老板是否被农民工胁迫不加以考虑,关键是老板同意;条件3:财务对每个人的银行信息是否准确不加以判断,只对是否有对应人的银行信息加以判断。所以如果想通过if判断完成自己想做的事情,对应要判断的条件要一定要考虑清楚,需要对哪种结果加以判断。

条件判断中很多机制其中常见的机制-“ 比较”

条件判断的常用判断类型:

  • 整数测试:判断数字之前的关系的:大小,相等,大于小于等
  • 字符测试:判断字符串之间的关系,是否相同,是否为空等
  • 文件测试:判断文件是否存在,类型是否匹配,等等
在所有的判断中,条件的成立都是靠命令状态返回值来实现的:“ $?”
      0:正确
      1-255:错误
  • 逻辑运算:非0为假,0为真
    • 与运算:&&
    • 或运算:||
    • 非运算:! :结果取反

bash 条件判断语法:放在if后面对需要判断的内容放在

    text 判断表达式
    [ 判断表达式 ]  // [  ] 内侧两边必须有空格,否则为语法错误
    [[ 判断表达式 ]]

bash 条件判断用的关键字为:if

又分为多分支

单分支:
    if 条件; then
      分支1;
    fi
双分支:
    if 条件; then
      分支1;
    else 
      分支2;
    fi
多分支:
    if 条件; then
          分支1;
    elif 条件2; then 
          分支2;
    elif 条件3; then 
         分支3;
    ...
    else 
         分支n;
    fi

只要命令用作条件,就表示引用的是其状态结果(即执行成功与否),而非命令的输出结果,因此,不能使用命令替换符.

整数测试

   二元测试:满足条件是真,否则是假
  • num1 操作符 num2
    • -eq 等于 [ num1eqnum2 ]
    • -ne 不等于
    • -le:小于等于
    • -ge:大于等于
    • -lt:小于
    • -gt:大于

字符测试

双目:
     > : 大于
     < :小于
     ==:等于,等值比较
     =~:左侧是字符串,右侧是一个模式,判断左侧的字符串能否被右侧的模式所匹配:通常只在[[]]中使用
        模式中可以使用行首、行尾锚定符,但是模式不要加引号
     !=, <>: 不等于
   单目:
     -n 字符串: 字符串是否不空,不空为真,空则为假
     -z 字符串:字符串是否为空,空则为真,不空则假:

文件测试

通常就是测试文件是否存在,文件是否是特定的某个类型等

单目测试

测试文件是否存在;是为真,不是则为假
  • -e /路径/file:测试文件是否存在
  • -a /路径/file:测试文件是否存在
对文件类型的测试
  • -f /路径/file: 测试文件是否为普通文件
  • d /路径/somefile:测试文件是否为目录文件
  • -b /路径/somefile :测试文件是否存在并且是否是一个块设备
  • -c /路径/somefile :测试文件是否存在,并且为为字符设备
  • -h /路径/somefile :测试文件是否存在,并且为符号链接文件
  • -l 和-h 同样
  • -p /路径/somefile :测试文件是否存在,并且为管道文件
  • -S 同样
当前的执行用户对此文件有读取权限
  • -r /路径/somefile
当前的执行用户对此文件有写权限
  • -w /路径/somefile
当前的执行用户对此文件有执行权限
  • -x /路径/somefile
测试文件是否为空
  • -s /路径/somefile 测试文件是否存在并且不为空

双目测试

测试file1是否比file2更 新一些
  • file1 -nt file2 :
测试file1是否比file2更 老一些


  • file1 -ot file2 :

如果文件2不存在,那么它也认为文件1更新

bash知识点之脚本自动退出

exit n n为不为0,1,127,255的数字
Bash脚本是一种在Unix和Linux系统中广泛使用的命令行解释器脚本语言。它允许用户通过编写脚本来自动化执行一系列命令,从而提高工作效率。以下是Bash脚本的一些基本语法要点: ### 变量 Bash脚本中的变量不需要声明类型,可以直接赋值使用。变量名区分大小写,且不能包含空格。 ```bash name="John Doe" age=30 echo "Name: $name, Age: $age" ``` 变量可以通过`$`符号引用其值,如上例中的`$name`和`$age`。 ### 命令替换 命令替换允许将一个命令的输出结果作为另一个命令的参数或变量的值。这可以通过反引号(`)或`$(...)`来实现。 ```bash current_date=$(date) echo "Current date: $current_date" ``` ### 条件判断 Bash提供了多种条件测试命令,最常用的是`if`语句结合`test`命令或者`[[ ... ]]`结构来判断条件是否成立。 ```bash if [[ $age -gt 18 ]]; then echo "Adult" else echo "Minor" fi ``` 这里的`-gt`表示大于,还有其他的比较运算符可以使用,比如`-lt`(小于)、`-eq`(等于)等。 ### 循环 Bash支持几种循环结构,包括`for`、`while`和`until`循环。 #### For 循环 ```bash for i in {1..5}; do echo "Number: $i" done ``` #### While 循环 ```bash count=1 while [[ $count -le 5 ]]; do echo "Count: $count" ((count++)) done ``` #### Until 循环 ```bash count=1 until [[ $count -gt 5 ]]; do echo "Count: $count" ((count++)) done ``` ### 函数 函数可以用来封装一段可重复使用的代码块。定义函数时不需要参数列表,但可以在调用时传递参数。 ```bash greet() { echo "Hello, $1!" } greet "World" ``` 在这个例子中,`$1`代表传递给函数的第一个参数。 ### 输入输出重定向 Bash允许对输入输出进行重定向,以控制命令的输入来源和输出目标。 - `>` 重定向标准输出到文件,会覆盖文件原有内容。 - `>>` 重定向标准输出到文件,会在文件末尾追加内容。 - `<` 重定向标准输入从文件读取。 - `<<` Here Document,用于传递多行文本给命令。 ```bash echo "Hello World" > output.txt cat output.txt >> output.txt cat < input.txt ``` ### 管道 管道(`|`)可以将一个命令的输出直接作为另一个命令的输入。 ```bash ps aux | grep 'bash' ``` 这个命令会列出所有正在运行的bash进程。 以上就是Bash脚本的一些基础语法,这些概念构成了编写复杂脚本的基础。通过实践和不断学习,可以更深入地掌握Bash脚本编程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值