Shell 变量引用实例
初学 Shell 编程时,对变量各种引用使用不太熟悉,走了很多弯路,本文记录变量引用的一些用法,希望对大家有所帮助。
引用
引用指将字符串用引用符号引起来,以防止特殊字符被 shell 脚本解释为其他意义。 shell 中定义了 4 种引用符号。
| 引用符 | 名称 | 说明 |
|---|---|---|
| '' | 单引号 | 称全引用或弱引用,引用所有的字符 |
| "" | 双引号 | 称部分引用或强引用,引用除美元符号($)、反引号(‘)和反斜线(\)之外的所有字符。 |
| `` | 反引号 | shell 把反引符中的内容解释为系统命令 |
| \ | 反斜杠 | 转义符,屏蔽下一个字符的特殊意义 |
实例脚本
可以使用 sh -v testVar.sh 命令来执行如下脚本,查看原始命令及输出内容。
# 实例脚本
$ cat testVar.sh
#!/bin/bash
# 变量引用示例
var=daodaotest
## 双引号
# 正常赋值输出
echo "Hello $var"
# 正常赋值输出,${} 方式
echo "Hello ${var}"
# 不会有任何输出,shell 会去引用变量 var2 的值
echo "$var2"
# 正常输出,推荐使用 ${} 方式来引用变量
echo "${var}2"
## 反引号
# 把 pwd 解释为系统命令,即:先执行 pwd,再 echo 打印
echo `pwd`
# 相等于 `pwd`
echo $(pwd)
# 同理
echo `echo $var`
## 单引号
echo '单引号引用时,输出字面内容:$var'
echo '单引号引用时,输出字面内容:${var}'
## 转义符
echo '使用单引号引用,不需要使用转义符号: $、`、"、\'
echo "使用双引号引用,需要使用转义符号: \$、\`、\"、\\"
echo "\$var"
## 反引号嵌套单引号和双引号
jobName=dev-daodaotest
viewName=dev
# 此处的变量 ${viewName} 其实是放在了两对单引号中间,起到拼接的作用
name=`echo ${jobName}|awk 'BEGIN{FS="'${viewName}'-"} {print $2}'`
echo ${name}
微信公众号:daodaotest
Shell 变量引用实例的更多相关文章
- 2.8 补充:shell变量引用方式
一 变量 变量:本质上是程序中保存用户数据的一块内存空间,变量名就是内存空间地址. Shell中:变量可由字母数字和下划线组成,以字母或下划线开头. 命名:PATH=/sbin ...
- SHELL 变量引用
shell变量的引用非常重要,运用技巧灵活多变 变量的引用主要包含四类:双引号引用.单引号引用.反引号引用.反斜线引用 " " 双引号 屏蔽除美元符号$.反引号( ` )和反斜线( ...
- shell变量引用
var="www.sina.com.cn" echo ${var#*.} #sina.com.cn 从前向后删 echo ${var##*.} #.cn 贪婪模式从前向后删 ech ...
- 小鸟初学Shell编程(七)变量引用及作用范围
变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [root@li ...
- 使用expect实现自动交互,shell命令行自动输入,脚本自动化,变量引用,expect spawn执行带引号命令,expect 变量为空,不生效,不能匹配通配符*,函数,数组
背景 有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互. expect是一个自动交互功能的工具,可以满足代替我们实际工作 ...
- awk中引用shell变量的方法
1.通过命令行参数定义变量时引用: awk -v awk变量名= shell变量名 #!/bin/bash var4bash=test awk -v var4awk="$var4bash&q ...
- shell变量详解
1 shell变量基础 shell变量是一种很"弱"的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如let.de ...
- Shell入门教程:Shell变量
变量 是一种很“弱”的变量,默认情况下,一个变量保存一个串,Shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如 let.declare.expr.双括号等. Shell变量可 ...
- shell变量的替换
1 shell变量基础shell变量是一种很“弱”的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如let.declare.expr. ...
随机推荐
- .NET的资源并不限于.resx文件
为了构建一个轻量级的资源管理框架以满足简单的本地化(Localization)的需求,我试图直接对现有的Resource编程模型进行扩展.虽然最终没能满足我们的需求,但是这两天也算对.NET如何进行资 ...
- JavaScript----DOM和事件的简单学习
##DOM简单学习 * 功能:控制html文档的内容 * 代码:获取页面标签(元素)对象:Element * document.getElementById("id值"):通 ...
- jvm:内存结构(堆、方法区、程序计数器、本地方法栈、虚拟机栈)
1.jvm内存结构 静态编译:把java源文件编译成字节码文件class,这个时候class文件以静态方式存在. 类加载器:把java字节码文件加载到内存中 方法区:将字节码放到方法区作为元数据(简单 ...
- Java - Java开发中的安全编码问题
目录 1 - 输入校验 1.1 SQL 注入防范 1.2 XSS防范 1.3 代码注入/命令执行防范 1.4 日志伪造防范 1.5 XML 外部实体攻击 1.6 XML 注入防范 1.7 URL 重定 ...
- 粒子群优化算法(PSO)之基于离散化的特征选择(FS)(二)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 作者:Geppetto 前面我们介绍了特征选择(Feature S ...
- 2.Grpc消息定义
一个简单示例 syntax ="proto3";//设置默认版本,不写默认为proto2 //1,2,3 是字段的标记 Tag 不表示字段的值 message FirstMessa ...
- Selenium系列(十四) - Web UI 自动化基础实战(1)
如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...
- [hdu1269]城堡迷宫<tarjan强连通分量>
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269 tarjan算法是oi里很常用的一个算法,在理解方面需要多下一些功夫,如果不行直接记模板也行,因 ...
- ES6 class 类的理解(一)
优点 ES6 的类提供了几点明显的好处: 兼容当前大量的代码. 相对于构造器和构造器继承,类使初学者更容易入门. 子类化在语言层面支持. 可以子类化内置的构造器. 不再需要继承库:框架之间的代码变得更 ...
- 转载:Docker源码分析(一):Docker架构
原文地址: http://www.infoq.com/cn/articles/docker-source-code-analysis-part1 作者:孙宏亮 1 背景 1.1 Docker简介 D ...