用户登录
用户注册

分享至

19、UNIX 入门指南 – 替代

  • 作者: 半夏鎏離半夏傷
  • 来源: 51数据库
  • 2022-10-13

什么是替代?

当它遇到包含一个或多个特殊字符的表达式时 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 命令:


Escape Description

\\ 反斜杠

\a 警报(BEL)

\b 退格键

\c 抑制换行

\f 换页

\n 换行

\r 回车

\t 水平制表符

\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 程序员操纵基于状态变量的值。


下面的表中是所有可能的替换:


Form Description

${var} 替代 var 的值

${var:-word} 如果 var 为空或者没有赋值,word 替代 var。var 的值不改变。

${var:=word} 如果 var 为空或者没有赋值, var 赋值为 word 的值。

${var:?message} 如果 var 为空或者没有赋值,message 被编译为标准错误。这可以检测变量是否被正确赋值。

${var:+word} 如果 var 被赋值,word 将替代 var。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



软件
前端设计
程序设计
Java相关