引用

案例,假设我想输出一个星号(*),使用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. sql server truncate table 删除表数据限制条件

    truncate 注释 注释TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快 ...

  2. IDEA打可执行jar包

    流程: 1. File ->Project Structure -> Artifacts -> + -> JAR -> From modules with depende ...

  3. HDU_3591_(多重背包+完全背包)

    The trouble of Xiaoqian Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  4. redis的安装和使用【2】redis的java操作

    修改redis.conf# 配置绑定ip,作者机子为192.168.100.192,请读者根据实际情况设置bind 192.168.100.192#非保护模式protected-mode no保存重启 ...

  5. Linux终端常用快捷操作

    命令或文件名自动补全:在输入命令或文件名的前几个字母后,按Tab键,系统会自动补全或提示补全 上下箭头:使用上下箭头可以回溯之前的命令,增加命令的重用,减少输入工作量 !加之前输入过的命令的前几个字母 ...

  6. 梦想CAD控件网页版文字样式

    增加文字样式 用户可以增加文字样式到数据库,并设置其字体等属性,具体实现js代码如下: function CreateText(){ //返回控件的数据库对象 var database =mxOcx. ...

  7. Codeforces Round #470 Div. 2题解

    A. Protect Sheep time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  8. UVA-127 "Accordian" Patience(模拟)

    题目: 把52张牌从左到右排好,每张牌自成一个牌堆.当某张牌与它左边那张牌或者左边第三张牌匹配时(花色或者点数相同)时,就把这张牌移到那张牌上面. 移动之后还要查看是否可以进行其他移动.只有位于牌堆顶 ...

  9. js之字典操作

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 关于ajax跨域请求API数据的一些问题

    一般来说我们使用jquery的ajax来跨域请求API数据的时候每次请求,就只能请求一组数据,而且当我们再次点击发送ajax请求的时候,新请求的数据会覆盖掉原来的数据,那么如何每次在请求的数据的时候, ...