引用

案例,假设我想输出一个星号(*),使用echo怎样做?

echo *

这是肯定不行的,须要将*转移,即:echo \*

这样就引出了引用的概念.所为引用,是用来防止shell将某些你想要的东西解释成不同的意义.假设你希望某些可能被shell视为个别參数的东西保持为单个參数,这时你就必须将其引用.

引用的三种方式:

反斜杠转义

字符前置反斜杠(\),用来告知shell该字符即为其字面上的意义.

单引號

单引號(‘...’)强制shell将一对引號之间的全部字符都看做其字面上的意义.shell脚本会删除这两个引號,仅仅单独留下被括起来的完整文字内容:

命令:echo 'here are some character * ? ` $ \'

输出:here are some character * ? ` $ \

不能再一个单引號引用的字符串里再内嵌一个单引號.即使是反斜杠,在单引號里也没有特殊意义(某些系统里,像echo ‘A\tB’这种命令看起来像是shell特别的处理反斜杠,事实上不然,这是echo命令本身有特殊的处理方式)

如需混用单引號和双引號,能够小心的使用反斜杠转义以及不同引用字符串的连接来做到:

命令:echo 'he said "how'\''s tricks?

"'

输出:he said "how's tricks?"

命令”echo "she replied ,\"movin' along\""

输出:she replied ,"movin' along"

无论怎么处理,这样的结合方式永远是非常难阅读的.

双引號

双引號(“...”)就像单引號那样,将括起来的文字视为单一字符串.仅仅只是,双引號会确切的处理括起来文字中的转义字符和变量,算术,命令替换:

x=hahaha

echo “$x”

输出:hahaha

在双引號里,字符$,”,`与\,如需用到字面上的意义,都必须前置\.不论什么其它字符前面的反斜杠是不带特殊意义的.序列\-newline会全然的被删除,就好像是用在脚本里的正文中一样.

单引號被括在双引號里时就无特殊意义了,他们不必承兑,也不许转移.

命令:echo "hahah'"

输出:hahah'

一般来说,使用单引號的时机是希望全然不处理的地方.否则,当希望将多个单词视为单一字符串,但又须要shell为你做些事情,此时使用双引號,比如将一个变量值与还有一个变量值连在一起:

oldvar=”$oldvar $newvar”

shell学习三十七天----引用的更多相关文章

  1. Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类

    一.多环境配置 在工作中,对于开发环境.测试环境.生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配 ...

  2. spring源码学习(三)--spring循环引用源码学习

    在spring中,是支持单实例bean的循环引用(循环依赖)的,循环依赖,简单而言,就是A类中注入了B类,B类中注入了A类,首先贴出我的代码示例 @Component public class Add ...

  3. shell学习三十八天----运行顺序和eval

    运行顺序和eval shell从标准输入或脚本中读取的每一行称为管道,它包括了一个或多个命令,这些命令被一个或多个管道字符(|)隔开. 其实嗨哟非常多特殊符号可用来切割单个的命令:分号(;),管道(| ...

  4. linux shell学习三

    Shell for循环 Shell for循环的语法如下所示 for 变量 in 列表 do command1 command2 ... commandN done 举例: ..} do echo $ ...

  5. Salesforce LWC学习(三十七) Promise解决progress-indicator的小问题

    本篇参考:https://developer.salesforce.com/docs/component-library/bundle/lightning-progress-indicator/exa ...

  6. shell学习三十四天----printf详解

    http://blog.csdn.net/shanyongxu/article/details/46744055

  7. shell学习五十七天----linux任务管理,针对上一讲的总结和扩展

    linux任务管理 在linux下有两类任务管理,各自是一次性和周期性.一次性是at和batch,周期性又分为系统不论什么和用户任务. 一次性任务: 1.命令格式:at [选项] time 2.选项: ...

  8. python学习三十七天函数的作用域查找顺序LEGB

    python函数的作用域查找顺序LEGB,分别为 locals  eclosing  globals  builtins .了解作用域的范围,可以更好的操作你想要的业务,分别介绍一下. 1,local ...

  9. 前端学习(三十七)angular(笔记)

    MVC     后台    M         Module             数据层    V         View             视图层    C         Contro ...

随机推荐

  1. Microsoft SQL Server学习(六)--查询语句

    联合查询 use student --建表 create table class_A( id int primary key, name varchar(50), sex char(50), cour ...

  2. STA之Concepts (1)

    Static Timing Analysis is one of the many techniques available to verify the timing of a digital des ...

  3. SpringBoot(1.5.6.RELEASE)源码解析

    转自 https://www.cnblogs.com/dylan-java/p/7450914.html 启动SpringBoot,需要在入口函数所在的类上添加@SpringBootApplicati ...

  4. 微服务网关从零搭建——(二)搭建api网关(不带验证)

    环境准备 创建空的core2.1 api项目  演示使用名称APIGateWay  过程参考上一篇 完成后在appsettings.json 添加节点 "Setting": { & ...

  5. vivo手机执行input命令提示killed

    异常现象: 使用vivo手机时发现通过inputManager发送按键.执行屏幕滑动等动作失效,相关API并没有任何异常抛出,继续跟踪发现shell控制台执行input进行屏幕滑动.发送文本.模拟按键 ...

  6. Luogu P1297 [国家集训队]单选错位

    P1297 [国家集训队]单选错位 题目背景 原 <网线切割>请前往P1577 题目描述 gx和lc去参加noip初赛,其中有一种题型叫单项选择题,顾名思义,只有一个选项是正确答案.试卷上 ...

  7. Gym - 101670F Shooting Gallery(CTU Open Contest 2017 区间dp)

    题目&题意:(有点难读...) 给出一个数字序列,找出一个区间,当删除这个区间中的两个相同的数字后,只保留这两个数字之间的序列,然后继续删除相同的数字,问最多可以实行多少次删除操作. 例如: ...

  8. Re0:DP学习之路 数塔 HDU - 2084(基础递推)

    解法 首先是输入的问题,输入的时候还要注意每一层都有多少个 然后是怎么求解,一般求解首先要考虑顺序,是正序还是倒序 如果这个题是正序的话那么最终还需要将最后一行进行一次找max的运算 如果是倒序的话那 ...

  9. keep

    简介 什么是keepalived呢?keepalived是实现高可用的一种轻量级的技术手段,主要用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生.之所以说keepa ...

  10. gulp-file-include 合并 html 文件

    gulp-file-include 是 gulp 插件,它提供了一个 include 方法让我们可以像后端模板那样把公共部分的页面导入进来. 安装依赖包(包括了 gulp-file-include 和 ...