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