Shell基础概览(中)

一、运算符

1.概览

  • Shell 和其他编程语言一样,支持多种运算符,包括:

    • 算数运算符
    • 关系运算符
    • 布尔运算符
    • 字符串运算符
      -文件测试运算符
  • 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awkexpr,expr 最常用。

  • expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

    例如,两个数相加(注意使用的是反引号 `而不是单引号 '):

    #!/bin/bash
    val=`expr 2 + 2` #注意不能写成 2+2 加号两边要用空格分隔
    echo "两数之和: ${val}"
    

    两点注意:

    • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
    • 完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

2.算术运算

  • 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
    在这里插入图片描述
    注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b]是错误的,必须写成 [ $a == $b ]

  • 实例:

    #!/bin/bash
    a=10
    b=20
    
    val=`expr $a + $b`
    echo "$a + $b = $val"
    
    val=`expr $a \* $b`
    echo "a * b : $val"
    
    if [ $a == $b ]
    then
    	echo "a 等于 b"
    fi
    if [ $a != $b ]
    then 
    	echo "a 不等于 b"
    fi
    

    运行结果:

    10 + 20 = 30
    a * b : 200
    a 不等于 b
    

    注意:

    • 乘号*前边必须加反斜杠\才能实现乘法运算;
    • if…then…fi 是条件语句,后续将会讲解。
    • 在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*"不需要转义符号 "\"

3.关系运算符

  • 关系运算符只支持数字,不支持字符串,除非字符串的值是数字。下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
    在这里插入图片描述

4.布尔运算符

  • 下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
    在这里插入图片描述
    a=10
    b=20
    
    if [ $a -lt 100 -o $b -gt 15 ]
    then
       echo "$a 小于 100 或 $b 大于 100 : 返回 true"
    else
       echo "$a 小于 100 或 $b 大于 100 : 返回 false"
    fi
    
    #输出结果: 10 小于 100  20 大于 100 : 返回 true
    

5.逻辑运算符

  • 以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
    在这里插入图片描述

6.字符串运算符

  • 下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:
    在这里插入图片描述
    #!/bin/bash
    a="abc"
    b="efg"
    
    if [ $a = $b ]
    then
    	echo "$a = $b : a等于b"
    else
    	echo "$a = $b : a不等于b"
    fi
    
    if [ -z $a ]
    then 
    	echo "-z $a : 字符串长度为0"
    else	
    	echo "-z $a : 字符串长度不为0"
    fi
    
    执行结果
    abc = efg : a不等于b
    -z abc : 字符串长度不为0
    

7.文件测试运算符

  • 文件测试运算符用于检测 Unix 文件的各种属性。属性检测描述如下:
    https://www.runoob.com/linux/linux-command-manual.html
    在这里插入图片描述

二、echo命令

1.基础用法:

  • Shell 的 echo 指令字符串的输出。命令格式:echo string
    您可以使用echo实现更复杂的输出格式控制。

2.显示普通字符串:

echo "It is a test"

这里的双引号完全可以省略,以下命令与上面实例效果一致:

echo It is a test

3.显示转义字符

echo "\"It is a test\""

结果将是:

"It is a test"

同样,双引号也可以省略

4.显示变量

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量

#!/bin/sh
read name 
echo "$name It is a test"

以上代码保存为 test.sh,name 接收标准输入的变量,结果将是:

[root@www ~]# sh test.sh
OK                     #标准输入
OK It is a test        #输出

5.显示换行


echo -e "OK! \n" # -e 开启转义
echo "It is a test"

#输出结果:
OK!

It is a test

6.显示不换行

#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
输出结果:

OK! It is a test

7.显示结果定向至文件

echo "It is a test" > myfile

8.原样输出字符串

不进行转义或取变量(用单引号)

echo '$name\"'
输出结果:

$name\"

8.显示命令执行结果

echo `date`

# 结果将显示当前日期
Thu Jul 24 10:08:46 CST 2014

注意: 这里使用的是反引号 `, 而不是单引号 '。

三、printf命令

TODO

四、test命令

TODO

五、Where to go

Shell基础概览(下)

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页