Unix / Linux - shell 替换

  • 什么是替代?

    当 shell 遇到包含一个或多个特殊字符的表达式时,它会执行替换。

    例子

    这里,变量的打印值被替换为它的值。同时,"\n" 被新行取代 -
    
    #!/bin/sh
    a=10
    echo -e "Value of a is $a \n"
    
    您将收到以下结果。这里的-e 选项启用反斜杠转义的解释。
    
    Value of a is 10
    
    以下是没有的结果 -e 选项 -
    
    Value of a is 10\n
    
    以下转义序列可用于 echo 命令 -
    序号 转义和描述
    1
    \\
    反斜杠
    2
    \a
    警报 (BEL)
    3
    \b
    退格
    4
    \c
    抑制尾随换行
    5
    \f
    换页
    6
    \n
    换行
    7
    \r
    回车
    8
    \t
    水平标签
    9
    \v
    垂直制表符
    您可以使用 -E 禁用反斜杠转义解释的选项(默认)。
    您可以使用 -n 禁用插入新行的选项。
  • 命令替换

    命令替换是 shell 执行一组给定命令然后用它们的输出替换命令的机制。

    句法

    当命令被给出时执行命令替换 -
    
    `command`
    
    执行命令替换时,请确保使用反引号,而不是单引号字符。

    例子

    命令替换通常用于将命令的输出分配给变量。以下每个示例都演示了命令替换 -
    
    #!/bin/sh
    DATE=`date`
    echo "Date is $DATE"
    USERS=`who | wc -l`
    echo "Logged in user are $USERS"
    UP=`date ; uptime`
    echo "Uptime is $UP"
    
    执行后,您将收到以下结果 -
    
    Date is Thu Jul  2 03:59:57 MST 2009
    Logged in user are 1
    Uptime is Thu Jul  2 03:59:57 MST 2009
    03:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15
    
  • 变量替换

    变量替换使 shell 程序员能够根据变量的状态操作变量的值。
    以下是所有可能替换的下表 -
    序号 表格和说明
    1
    ${var}
    替换var的值。
    2
    ${var:-word}
    如果var为 null 或未设置,则替换为wordvar. var的值不会改变。
    3
    ${var:=word}
    如果var为 null 或未设置,则将var设置为word.
    4
    ${var:?message}
    如果var为 null 或未设置,则将消息打印到标准错误。这将检查变量设置是否正确。
    5
    ${var:&plusword}
    如果VAR设置,word代替变量。var的值不会改变。

    例子

    以下是显示上述替换的各种状态的示例 -
    
    #!/bin/sh
    echo ${var:-"Variable is not set"}
    echo "1 - Value of var is ${var}"
    echo ${var:="Variable is not set"}
    echo "2 - Value of var is ${var}"
    unset var
    echo ${var:+"This is default value"}
    echo "3 - Value of var is $var"
    var="Prefix"
    echo ${var:+"This is default value"}
    echo "4 - Value of var is $var"
    echo ${var:?"Print this message"}
    echo "5 - Value of var is ${var}"
    
    执行后,您将收到以下结果 -
    
    Variable is not set
    1 - Value of var is
    Variable is not set
    2 - Value of var is Variable is not set
    3 - Value of var is
    This is default value
    4 - Value of var is Prefix
    Prefix
    5 - Value of var is Prefix