引用

案例,假设我想输出一个星号(*),使用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. android studio 的Error:No such property: packageApplicationTask for class: com.android.build.gradle.internal.variant.ApkVariantOutputData解决方法

    出现这个原因是安装了jrebel热部署插件,在projectStructure中的projec选项中,android 插件源仓会有热部署的配置.将jcenter后的配置全部删除就可以 注:本人只安装了 ...

  2. UVM基础之-------uvm report机制的使用

    后面的例子我会继续补充: 1. 因为uvm默认定义的message格式比较长,非常不利于debug过程中的分析使用,一般情况下,开始使用uvm,都要利用uvm_report_server重新定义mes ...

  3. 如何安装Ant,配置环境变量??

    Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发. Ant是一个基于Java,并且主要用于Java工程的构建工具.Ant本意是A ...

  4. CAD把当前图上数据保存为一个二进流对象(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::WriteBinStreamEx 把当前图上数据保存为一个二进流对象,详细说明如下: 参数 说明 LPCTSTR pszPasswor ...

  5. vue组件---组件注册

    (1)组件名 在注册一个组件的时候,我们始终需要给它一个名字.比如在全局注册的时候我们已经看到了: Vue.component('my-component-name', { /* ... */ }) ...

  6. cc.Node—Action

    1: Action类是动作命令,我们创建Action,然后节点运行action就能够执行Action的动作; 2: Action分为两类: (1) 瞬时就完成的ActionInstant, (2) 要 ...

  7. 洛谷——P2171 Hz吐泡泡

    P2171 Hz吐泡泡 题目描述 这天,Hz大大心血来潮,吐了n个不同的泡泡玩(保证没有重复的泡泡).因为他还要写作业,所以他请你帮他把这些泡泡排序成树(左子树<=根<右子树).输出它的后 ...

  8. Luogu P4549 裴蜀定理 / Min

    思路 题目已经给出了正解.我们只需要将裴蜀定理推广到若干数的线性组合就可以做这道题了 要注意的是需要在输入的时候取一个绝对值.因为可能会有负数存在.我之前也写过裴蜀定理的证明,要看的话点这里 吐槽 第 ...

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

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

  10. 这几道Java集合框架面试题在面试中几乎必问

    Arraylist 与 LinkedList 异同 1. 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全: 2. 底层数据结构: Arraylis ...