shell介绍(五)--shell基本运算符

目录

1. 算术运算符

示例:

2. 关系运算符

示例:

3. 逻辑运算符

示例:

4. 字符串运算符

示例:

5. 文件测试运算符

示例:

6. 位运算符

示例:

7. 组合表达式

示例:

注意事项


 

在Unix/Linux Shell脚本中,支持多种类型的运算符,包括算术运算符、逻辑运算符、位运算符、文件测试运算符等。这些运算符主要用于条件判断、表达式计算等场景。下面是详细分类及其用法:

1. 算术运算符

算术运算符用于数值计算,通常在expr命令或者let/(( ))构造中使用。

  • + 加法
  • - 减法
  • * 乘法
  • / 除法
  • % 取模
  • ** 幂运算(仅限于 Bash 4.0 及更高版本)

示例:

 

bash

深色版本

1#!/bin/bash
2a=10
3b=3
4sum=$((a + b))
5diff=$((a - b))
6prod=$((a * b))
7quot=$((a / b))
8rem=$((a % b))
9power=$((a ** b))
10
11echo "Sum: $sum"
12echo "Difference: $diff"
13echo "Product: $prod"
14echo "Quotient: $quot"
15echo "Remainder: $rem"
16echo "Power: $power"

2. 关系运算符

关系运算符用于比较两个数值,通常与test[命令一起使用。结果为布尔值。

  • -eq 相等
  • -ne 不等
  • -lt 小于
  • -le 小于等于
  • -gt 大于
  • -ge 大于等于

示例:

 

bash

深色版本

1#!/bin/bash
2a=10
3b=3
4
5if [ $a -eq $b ]; then
6    echo "a is equal to b"
7elif [ $a -lt $b ]; then
8    echo "a is less than b"
9else
10    echo "a is greater than b"
11fi

3. 逻辑运算符

逻辑运算符用于组合多个条件表达式,通常与test[命令一起使用。

  • -a 逻辑与(AND)
  • -o 逻辑或(OR)
  • ! 逻辑非(NOT)

示例:

 

bash

深色版本

1#!/bin/bash
2a=10
3b=3
4
5if [ $a -gt $b ] && [ $b -gt 0 ]; then
6    echo "a is greater than b and b is greater than 0"
7fi

4. 字符串运算符

字符串运算符用于比较和处理字符串,通常与test[命令一起使用。

  • = 字符串相等
  • != 字符串不等
  • -z 字符串为空(长度为零)
  • -n 字符串非空(长度不为零)

示例:

 

bash

深色版本

1#!/bin/bash
2str1="hello"
3str2="world"
4
5if [ "$str1" = "$str2" ]; then
6    echo "Strings are equal"
7else
8    echo "Strings are not equal"
9fi

5. 文件测试运算符

文件测试运算符用于检查文件的各种属性,通常与test[命令一起使用。

  • -e 文件是否存在
  • -r 文件是否可读
  • -w 文件是否可写
  • -x 文件是否可执行
  • -f 是否为普通文件
  • -d 是否为目录
  • -s 文件是否非空(具有非零字节数)

示例:

 

bash

深色版本

1#!/bin/bash
2file="/path/to/file"
3
4if [ -e "$file" ]; then
5    echo "File exists"
6else
7    echo "File does not exist"
8fi
9
10if [ -r "$file" ]; then
11    echo "File is readable"
12else
13    echo "File is not readable"
14fi

6. 位运算符

位运算符用于对二进制位进行操作,通常在let(( ))构造中使用。

  • & 按位与
  • | 按位或
  • ^ 按位异或
  • ~ 按位取反
  • << 左移
  • >> 右移

示例:

 

bash

深色版本

1#!/bin/bash
2a=$(( 0b1100 ))
3b=$(( 0b1010 ))
4
5and=$(( a & b ))
6or=$(( a | b ))
7xor=$(( a ^ b ))
8not=$(( ~a ))
9lshift=$(( a << 2 ))
10rshift=$(( a >> 2 ))
11
12echo "And: $(printf '%#x' $and)"
13echo "Or: $(printf '%#x' $or)"
14echo "Xor: $(printf '%#x' $xor)"
15echo "Not: $(printf '%#x' $not)"
16echo "Left Shift: $(printf '%#x' $lshift)"
17echo "Right Shift: $(printf '%#x' $rshift)"

7. 组合表达式

可以使用括号()来分组表达式,使表达式的优先级更加明确。

示例:

 

bash

深色版本

1a=10
2b=3
3result=$(( (a + b) * 2 ))
4
5echo "Result: $result"

注意事项

  • 使用test[命令时,需要确保正确的语法格式,例如所有的运算符和参数之间必须有空格。
  • 对于数字运算,推荐使用let(( ))构造,因为它们不需要额外的命令来解析表达式。
  • 在进行字符串比较时,通常使用双引号"$var"来确保变量正确展开。
  • 文件测试运算符要求路径名是绝对路径或者相对路径能够正确解析到文件。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值