- Unix/Linux 初学者教程
- Unix/Linux - 首页
- Unix/Linux - 什么是Linux?
- Unix/Linux - 入门指南
- Unix/Linux - 文件管理
- Unix/Linux - 目录
- Unix/Linux - 文件权限
- Unix/Linux - 环境变量
- Unix/Linux - 基本实用程序
- Unix/Linux - 管道与过滤器
- Unix/Linux - 进程
- Unix/Linux - 进程间通信
- Unix/Linux - vi 编辑器
- Unix/Linux Shell编程
- Unix/Linux - Shell 脚本
- Unix/Linux - 什么是Shell?
- Unix/Linux - 使用变量
- Unix/Linux - 特殊变量
- Unix/Linux - 使用数组
- Unix/Linux - 基本运算符
- Unix/Linux - 决策语句
- Unix/Linux - Shell 循环
- Unix/Linux - 循环控制
- Unix/Linux - Shell 替换
- Unix/Linux - 引号机制
- Unix/Linux - I/O 重定向
- Unix/Linux - Shell 函数
- Unix/Linux - 手册页帮助
- 高级 Unix/Linux
- Unix/Linux - 标准 I/O 流
- Unix/Linux - 文件链接
- Unix/Linux - 正则表达式
- Unix/Linux - 文件系统基础
- Unix/Linux - 用户管理
- Unix/Linux - 系统性能
- Unix/Linux - 系统日志
- Unix/Linux - 信号和陷阱
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为空或未设置,则用var替换word。var的值不会改变。 |
3 |
${var:=word} 如果var为空或未设置,则将var设置为word的值。 |
4 |
${var:?message} 如果var为空或未设置,则将message打印到标准错误。这用于检查变量是否正确设置。 |
5 |
${var:+word} 如果var已设置,则用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
广告