`

Shell替换:Shell变量替换,命令替换,转义字符

阅读更多
如果表达式中包含特殊字符,Shell 将会进行替换。例如,在双引号中使用变量就是一种替换,转义字符也是一种替换。

举个例子:
#!/bin/bash
a=10
echo -e "Value of a is $a \n"
运行结果:
Value of a is 10
这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出:
Value of a is 10\n


下面的转义字符都可以用在 echo 中:
转义字符 含义
\\ 反斜杠
\a 警报,响铃
\b 退格(删除键)
\f 换页(FF),将当前位置移到下页开头
\n 换行
\r 回车
\t 水平制表符(tab键)
\v 垂直制表符 可以使用 echo 命令的 -E 选项禁止转义,默认也是不转义的;使用 -n 选项可以禁止插入换行符。
命令替换

命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。

命令替换的语法:
`command`
注意是反引号,不是单引号,这个键位于 Esc 键下方。

下面的例子中,将命令执行结果保存在变量中:
#!/bin/bash
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
变量替换

变量替换可以根据变量的状态(是否为空、是否定义等)来改变它的值

可以使用的变量替换形式:
形式 说明
${var} 变量本来的值
${var:-word} 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
${var:=word} 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。
${var:?message} 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。
若此替换出现在Shell脚本中,那么脚本将停止运行。
${var:+word} 如果变量 var 被定义,那么返回 word,但不改变 var 的值。
请看下面的例子:
#!/bin/bash

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
分享到:
评论

相关推荐

    Korn Shell.doc (kshel语法、变量和内置命令简介)

    - **命令替换**:`cmd1 $(cmd2)` 使用 `cmd2` 的输出作为 `cmd1` 的参数。 - **逻辑运算**:`cmd1 && cmd2` 表示只有当 `cmd1` 成功时才执行 `cmd2`;`cmd1 || cmd2` 表示如果 `cmd1` 失败才执行 `cmd2`。 5. **...

    Shell命令行中特殊字符与其转义详解(去除特殊含义)

    转义字符`\`是最常用的特殊字符转义方法,将其放在特殊字符前即可使其失效。例如,如果想打印名为`test*`的文件内容,可以使用`cat test\*`,这里的`\`告诉Shell不要将`*`作为通配符处理。 单引号`' '`和双引号`" ...

    练习shell变量、重定向、管道等相关命令

    ### 练习Shell变量、重定向、管道等相关命令 在Linux和Unix系统中,Shell脚本是一种非常强大的工具,用于自动化任务处理、系统管理和数据处理等。熟练掌握Shell中的变量、重定向和管道操作对于提高工作效率至关重要...

    Shell开发教程.docx

    Shell替换:Shell变量替换,命令替换,转义字符 **替换机制**: - **变量替换**:`echo "Hello, $USER!"` 使用变量值。 - **命令替换**:`echo $(date)` 执行命令并使用其输出。 - **转义字符**:使用`\`来取消...

    bat文件 字符串提取&替换等操作

    在本文中,我们将深入探讨如何在BAT文件中进行字符串操作,包括提取和替换,以及相关的DOS命令和技巧。 1. **字符串提取**: 在BAT文件中,可以使用`FIND`和`FINDSTR`命令来提取字符串。`FIND`命令用于查找文本...

    shell浅谈之一 变量和引用

    此外,反引号``用于执行命令替换,`$()`则提供一种更现代的命令替换语法。 总结,shell脚本中的变量和引用是其灵活性和强大功能的关键所在。理解变量的类型、赋值规则、位置参数以及内部变量的使用,能帮助我们编写...

    shell脚本精华总结

    本资源摘要信息涵盖了 shell 脚本的基础知识点,包括 shell 脚本的基本概念、vim 编辑器的使用、shell 命令的执行方式、vim 中的搜索和替换、环境变量的设置和使用等。 一、shell 脚本的基本概念 * shell 脚本是一...

    Linux shell命令初学解析

    - `\`:转义字符,用于延长命令至下一行。 #### 常用控制组合键 Linux Shell还支持一些常用的控制组合键,它们可以方便地管理和控制Shell会话: - **Ctrl+C**:中止当前正在执行的命令。 - **Ctrl+\**:同 Ctrl+C...

    Linux Shell 命令详解.doc

    Bash支持多种转义字符,如`\a`(ASCII响铃字符)、`\d`(日期格式化)、`\e`(ASCII转义字符)、`\h`(主机名的一部分)等,这些字符用于格式化输出或控制终端行为。 #### 命令历史与重复 利用`history`命令,用户...

    6 shell变量1

    - 双引号 `"` 引导的字符串允许包含变量和转义字符,可以进行变量替换和转义字符解析。 6. **字符串拼接**: - 可以通过 `$变量名` 的方式拼接变量值,例如 `a="123"$a456` 或 `${a}456`。 - 也可以使用双引号 `...

    Linux-Shell特殊字符和控制字符大全

    echo $a)`:此命令组会在子Shell中定义变量`a`,但主Shell环境中无法访问该变量。 - `array=(a b c)`:初始化数组`array`。 ##### 9. `{}` 代码块/文件扩展 - **用途**:用于创建代码块;用于文件名扩展。 - **...

    shell特殊字符含义

    ### Shell特殊字符含义详解 在Shell编程中,特殊字符扮演着非常重要的角色,它们能够帮助开发者更加高效地完成脚本编写、控制流程以及处理输入输出等任务。下面将详细介绍Shell编程中的一些关键特殊字符及其用途。 ...

    第二十一章:shell编程规范及变量1

    4. 引号的使用有讲究,`""`是弱引用,`''`是强引用,`$()`和``(反引号)用于命令替换,其中`$()`可嵌套。 5. 交互定义变量可通过`read -p`命令获取用户输入。 环境变量是系统级别的,用于设置用户的工作环境,如`...

    Shell脚本中变量与字符串操作的实战指南

    涵盖的内容包括变量的定义和赋值、特殊变量的应用、字符串的各种操作如拼接、长度计算、子串提取、查找子串位置、替换子串以及不同类型的引号使用和特殊字符的转义技巧。文章还提供了一个综合案例,展示了如何利用...

    shell常用命令

    - **7.2.1** 使用 `export` 命令可以使变量的修改对子 shell 生效。 - **7.3** `unset` 命令:用于删除变量。 - **7.3.1** 删除指定变量。 - **7.3.2** 示例:`unset newval`。 以上是关于 Linux Shell 中常用的...

    Linux之Shell的变量设置.doc

    Linux Shell 变量设置是一种非常重要的技术,在 Linux 中,每个用户登录系统之后都会有一个属于自己的 bash shell,每个人都能够使用 bash 执行命令来收取自己的邮箱,但是 bash 是如何知道你的邮箱是哪个文件?...

    java调用shell向DataX传参,带where条件,特殊字符

    在Java程序中调用Shell命令并传入带有特殊字符的参数时,会遇到一些挑战,因为Shell和DataX对特殊字符的处理方式可能不同。 首先,让我们理解Java如何调用Shell命令。在Java中,我们可以使用Runtime或者...

    shell与python文档

    双引号允许变量扩展和转义字符: ```shell your_name="qinjx" greeting="hello, $your_name!" ``` 获取字符串长度使用${#str}表达式,提取子字符串可以使用${str:start:length}的格式: ```shell string="runoob is ...

Global site tag (gtag.js) - Google Analytics