shell(五)

75 阅读2分钟
  • 本文已参与「新人创作礼」活动,一起开启掘金创作之路。
逻辑关系表达式
  • |
    如果第一个参数非空且非0,则返回第一个参数的值,否则返回第二个参数的值,但要求第二个参数的值也是非空或非0,否则返回0。如果第一个参数是非空或非0时,不会计算第二个参数。

  • &
    如果两个参数都非空且非0,则返回第一个参数,否则返回0。如果第一个参为0或为空,则不会计算第二个参数。

  • < <= = == != >= >
    比较两端的参数,如果为true,则返回1,否则返回0。”==”是”=”的同义词。”expr”首先尝试将两端参数转换为整数,并做算术比较,如果转换失败,则按字符集排序规则做字符比较。

  •  可以该表优先级,但需要用反斜杠转义
    示例:

    a=3
    b=4
    
    echo `expr $a > $b`  # 输出0,>需要转义
    echo `expr $a '<' $b`  # 输出1,也可以将特殊字符用引号引起来
    echo `expr $a '>=' $b`  # 输出0
    echo `expr $a <= $b`  # 输出1
    
    c=0
    d=5
    
    echo `expr $c & $d`  # 输出0
    echo `expr $a & $b`  # 输出3
    echo `expr $c | $d`  # 输出5
    echo `expr $a | $b`  # 输出3
    
read命令

read命令用于从标准输入中读取单行数据。当读到文件结束符时,exit code为1,否则为0。

参数说明

  • -p: 后面可以接提示信息

  • -t:后面跟秒数,定义输入字符的等待时间,超过等待时间后会自动忽略此命令
    实例:

    acs@9e0ebfcd82d7:~$ read name  # 读入name的值
    acwing yxc  # 标准输入
    acs@9e0ebfcd82d7:~$ echo $name  # 输出name的值
    acwing yxc  #标准输出
    acs@9e0ebfcd82d7:~$ read -p "Please input your name: " -t 30 name  # 读入name的值,等待时间30秒
    Please input your name: acwing yxc  # 标准输入
    acs@9e0ebfcd82d7:~$ echo $name  # 输出name的值
    acwing yxc  # 标准输出