添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

算术运算符

下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:

if...then...fi 是条件语句,后续将会讲解。
  • 在 MAC 中 shell 的 expr 语法是: $((表达式)) ,此处表达式中的 "*" 不需要转义符号 "\" 。
  • 关系运算符

    关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

    下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:

    10 小于 100 且 20 大于 15 : 返回 true 10 小于 100 或 20 大于 100 : 返回 true 10 小于 5 或 20 大于 100 : 返回 false

    逻辑运算符

    以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:

    变量 file 表示文件 /var/www/runoob/test.sh ,它的大小为 100 字节,具有 rwx 权限。下面的代码,将检测该文件的各种属性:

    #!/bin/bash
    # author:菜鸟教程
    # url:www.runoob.com
    file = "/var/www/runoob/test.sh"
    if [ -r $file ]
    echo "文件可读"
    echo "文件不可读"
    if [ -w $file ]
    echo "文件可写"
    echo "文件不可写"
    if [ -x $file ]
    echo "文件可执行"
    echo "文件不可执行"
    if [ -f $file ]
    echo "文件为普通文件"
    echo "文件为特殊文件"
    if [ -d $file ]
    echo "文件是个目录"
    echo "文件不是个目录"
    if [ -s $file ]
    echo "文件不为空"
    echo "文件为空"
    if [ -e $file ]
    echo "文件存在"
    echo "文件不存在"

    执行脚本,输出结果如下所示:

    文件可执行 文件为普通文件 文件不是个目录 文件不为空 自增和自减操作符

    尽管 Shell 本身没有像 C、C++ 或 Java 那样的 ++ 和 -- 操作符,但可以通过其他方式实现相同的功能。以下是一些常见的方法:

    使用 let 命令

    let 命令允许对整数进行算术运算。

    #!/bin/bash
    # 初始化变量
    num = 5
    let num++
    let num--
    echo $num

    使用 $(( )) 进行算术运算

    $(( )) 语法也是进行算术运算的一种方式。

    #!/bin/bash
    # 初始化变量
    num = 5
    num =$ ( ( num + 1 ) )
    num =$ ( ( num - 1 ) )
    echo $num

    使用 expr 命令

    expr 命令可以用于算术运算,但在现代脚本中不如 let $(( )) 常用。

    #!/bin/bash
    # 初始化变量
    num = 5
    num =$ ( expr $num + 1 )
    num =$ ( expr $num - 1 )
    echo $num

    使用 (( )) 进行算术运算

    与 $(( )) 类似,(( )) 语法也可以用于算术运算。

    #!/bin/bash
    # 初始化变量
    num = 5
    ( ( num++ ) )
    ( ( num-- ) )
    echo $num

    以下是一个完整的示例脚本,演示了自增和自减操作的使用:

    #!/bin/bash
    # 初始化变量
    num = 5
    echo "初始值: $num "
    let num++
    echo "自增后: $num "
    let num--
    echo "自减后: $num "
    # 使用 $(( ))
    num =$ ( ( num + 1 ) )
    echo "使用 $(( ) ) 自增后: $num "
    num =$ ( ( num - 1 ) )
    echo "使用 $(( ) ) 自减后: $num "
    # 使用 expr
    num =$ ( expr $num + 1 )
    echo "使用 expr 自增后: $num "
    num =$ ( expr $num - 1 )
    echo "使用 expr 自减后: $num "
    # 使用 (( ))
    ( ( num++ ) )
    echo "使用 (( )) 自增后: $num "
    ( ( num-- ) )
    echo "使用 (( )) 自减后: $num "

    运行这个脚本会输出以下内容:

    初始值: 5
    自增后: 6
    自减后: 5
    使用 $(( )) 自增后: 6
    使用 $(( )) 自减后: 5
    使用 expr 自增后: 6
    使用 expr 自减后: 5
    使用 (( )) 自增后: 6
    使用 (( )) 自减后: 5
  • #0
  •