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

举个例子:

  1. #!/bin/bash
  2. a=10
  3. 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可以先执行命令,将输出结果暂时保存,在适当的地方输出。

命令替换的语法:

  1. `command`

注意是反引号,不是单引号,这个键位于 Esc 键下方。

下面的例子中,将命令执行结果保存在变量中:

  1. #!/bin/bash
  2. DATE=`date`
  3. echo "Date is $DATE"
  4. USERS=`who | wc -l`
  5. echo "Logged in user are $USERS"
  6. UP=`date ; uptime`
  7. 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/bashecho ${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}"

运行结果:

  1. Variable is not set
  2. 1 - Value of var is
  3. Variable is not set
  4. 2 - Value of var is Variable is not set
  5. 3 - Value of var is
  6. This is default value
  7. 4 - Value of var is Prefix
  8. Prefix
  9. 5 - Value of var is Prefix

Shell替换:Shell变量替换,命令替换,转义字符相关推荐

  1. php正则替换模板变量,php正则替换变量指定字符的方法

    本文实例讲述了php正则替换变量指定字符的方法.分享给大家供大家参考.具体如下: 这里介绍三种常用方法. 方法一: $str = preg_quote('(银子)'); $txt = '我的呢称(银子 ...

  2. Linux中Shell的命令替换用法笔记

    命令替换主要是指将命令的标准输出值赋值给某个变量.命令替换属于Shell编程中非常重要的功能,需要熟悉掌握. 命令替换的方式 1.反引号:`命令` 2.$():$(命令) 用法说明:date1=`da ...

  3. shell编程入门、shell编程的基础知识(变量、命令、运算)、shell编程的语句

    shell编程 示例1 ex1 文件内容如下: #!/bin/sh #This is to show what a example looks like. echo "My First Sh ...

  4. shell中定义变量用双引号和单引号以及不用引号的区别

    1. 单引号 使用单引号的情况下,不管里面的是否有变量或者其他的表达是都是原样子输出 2. 双引号 如果其定义变量的时候使用双引号的话,则里面的变量或者函数会通过解析,解析完成后再输出内容,而不是把双 ...

  5. shell十三问--shell教程

    为什么80%的码农都做不了架构师?>>>    13_questions_of_shell shell十三问--shell教程(markdown 版本) ##shell十三问之1: ...

  6. shell 经典, shell 十三问

    原文链接:http://blog.csdn.net/freexploit/article/details/626660 我在 CU 的日子并不长,有幸在 shell 版上与大家结缘.除了跟众前辈学习到 ...

  7. shell经典,shell十三问

    我在 CU 的日子并不长,有幸在 shell 版上与大家结缘.除了跟众前辈学习到不少技巧之外,也常看到不少朋友的问题.然而,在众多问题中,我发现许多瓶颈都源于 shell 的基础而已.每次要解说,却总 ...

  8. shell经典 shell十三问

    我在 CU 的日子并不长,有幸在 shell 版上与大家结缘.除了跟众前辈学习到不少技巧之外,也常看到不少朋友的问题.然而,在众多问题中,我发现许多瓶颈都源于 shell 的基础而已.每次要解说,却总 ...

  9. ZT shell经典,shell十三问

    我在 CU 的日子并不长,有幸在 shell 版上与大家结缘.除了跟众前辈学习到不少技巧之外,也常看到不少朋友的问题.然而,在众多问题中,我发现许多瓶颈都源于 shell 的基础而已.每次要解说,却总 ...

最新文章

  1. JAVA List集合转Page(分页对象)
  2. go TypeError: Failed to execute ‘fetch‘ on ‘Window‘: Request with GET/HEAD method cannot have body.
  3. ##6.2 Neutron计算节点-- openstack pike
  4. Hadoop入门基础教程 Hadoop之完全分布式环境搭建
  5. odom_out_and_back.cpp
  6. 接口测试如何在json中引用mock变量
  7. 计算机主板 方便用户自己安装的是,电脑水冷安装教程步骤解析【图文】
  8. 6-1 二叉搜索树的操作集 (30 分)
  9. 用C#开发Windows服务
  10. 极客大学架构师训练营 框架开发 设计原则 设计模式 反应式编程框架 上课总结 第五课
  11. 华为Verilog入门教程
  12. python pdfminer3k_python 使用pdfminer3k 读取PDF文档的例子
  13. ARTS打卡10-抓住海森堡Bug
  14. payssion支付
  15. .csd文件怎么读?--CMU_MOSI_Opinion_Labels.csd
  16. 一文速学-Pandas处理时间序列数据操作详解
  17. 实用的集成学习模型调优策略SWA
  18. MT4电脑版交易软件使用技巧有哪些?
  19. 2021-2027全球与中国便携式超声波探伤仪市场现状及未来发展趋势
  20. 2023年1月国产数据库大事记-墨天轮

热门文章

  1. 分布式文件系统研究-测试-文件下载测试
  2. RocketMQ的存储之消息的存储分析
  3. SpringBoot_web开发-简介
  4. Spring ribbon
  5. Spring @Import源码解析
  6. 计算机刷帖知识点,09计算机408分(沙滩帖)
  7. mysql1577_使用Navicat for MySQL的1577错误解决办法
  8. 一行代码,保障分布式事务一致性—GTS:微服务架构下分布式事务解决方案
  9. 增强for循环、Map接口遍历、可变參数方法
  10. 从一个字符串中剔除连续的字符,只留一个。