`
ginge
  • 浏览: 208626 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Shell 强引号和弱引号

阅读更多

弱引号(Soft Quote

  弱引号是英文的双引号。我们知道Shell命令里也有元字符(用来描述其他字符的字符)例如*$等。如果命令后面跟的参数是用双引号括起的话,Shell解释器会先扩展双引号里面元字符引导的变量,字符代表的意义。

例子一:

[Ginge@localhost ~]$ echo "$USER is my name."

Ginge is my name.

USER是一个系统定义的变量,在这个例子里,Shell解释器先把双引号里面的变量值给替换了。

例子二:

[Ginge@localhost ~]$ echo "Current dir is `pwd`"

Current dir is /home/Ginge

这个例子里,Shell解释器先执行了双引号里面的命令pwd。注意`是键盘左上方靠近tab键的字符。

 

 

强引号(Strong Quote

 强引号是英文的单引号。一般来说,在单引号里面的所有字符,包括元字符,都会当成没有特殊意义的字符。让我们把上面例子的双引号换成单引号看看到底是不是这样子。

例子三:

[Ginge@localhost ~]$ echo '$USER is my name.'

$USER is my name.

 

[Ginge@localhost ~]$ echo 'Current dir is `pwd`'

Current dir is `pwd`

 

 

小技巧

不知道大家会不会尝试打印一个单引号。既然单引号那么强大,是不是三个单引号可以实现我们要做的事情呢?

例子四:

[Ginge@localhost ~]$ echo '''

看到了吧,要是按回车键,那么那个尖括号就会一直出来。这个是什么意思呢?其实Shell只是认为我们的还有输入的,所以一直等待我们输入。

 

1)  用双引号来打印单引号

例子五:

[Ginge@localhost ~]$ echo '"'

"

2)  用单引号来打印双引号

例子六:

[Ginge@localhost ~]$ echo "'"

'

 

那么是不是说我们在单引号里面就不能用单引号了呢?不是的,看下面这个例子:

例子七:

[Ginge@localhost ~]$ echo ''''

 

可是只输出了一个空行,这是为什么呢?原来这是单引号另外一个用法,在单引号里面可以用单引号,同时变量的替换也由此开启和关闭。这句话听起来很深奥,其实很简单。

例子八:

[Ginge@localhost ~]$ echo '$USER is '$USER', Got it ?'

$USER is Ginge, Got it ?

这个例子有两对单引号,我们为了更好的说明,设最外面为一对单引号为x,里面为一对主yx里面y外面的变量替换是关闭的,y里面的变量替换又打开了。聪明的你是不是想到,要是y里面还有一对z单引号,那变量替换应该就又关闭了。到底是不是这样呢?请你试一试。

 

到这个时候,可能还会有人问到,这个技巧好像用处不是很大吧。真的没有什么用吗?呵呵,这个在用到awk时特别有用。想想,如果某个目录下有多少用户的文件,而我们仅仅想查看某个用户的文件,那么用awk怎么来实现呢?

[Ginge@localhost ~]$ ls -la | awk '{if(match($3,"'$USER'")) print}'

drwx------ 2 Ginge Ginge 4096 Aug  9 22:47 .

-rw------- 1 Ginge Ginge  528 Aug  9 22:45 .bash_history

-rw-r--r-- 1 Ginge Ginge   24 Jul 12  2006 .bash_logout

-rw-r--r-- 1 Ginge Ginge  176 Jul 12  2006 .bash_profile

-rw-r--r-- 1 Ginge Ginge  124 Jul 12  2006 .bashrc

-rwxrwxr-x 1 Ginge Ginge   21 Aug  9 22:46 echo.sh

-rw------- 1 Ginge Ginge   35 Aug  4 02:43 .lesshst

-rw------- 1 Ginge Ginge  996 Aug  9 22:47 .viminfo

-rw-r--r-- 1 Ginge Ginge  658 Sep 12  2006 .zshrc

 

看到了吧,我们利用单引号开闭功能给awk传递了一个外部变量。

1
0
分享到:
评论

相关推荐

    Shell双引号和单引号有哪些不同

    因此字符串变量的定义有三种方式,分别是双引号、单引号和无引号。这三种方式有什么区别呢?单引号和双引号又有什么区别呢? 2.单引号 单引号定义字符串所见即所得,即将单引号内的内容原样输出,或者描述为单引号...

    linux shell 引号的使用

    linux shell 引号的使用

    shell 单双引号区别-易懂.docx

    shell 单双引号 区别 易懂 ,非常易懂 全面!

    每天一个Linux命令之shell单引号和双引号的经典解释

    主要给大家介绍了关于每天一个Linux命令之shell单引号和双引号的经典解释,文中通过示例代码介绍的非常详细,对大家学习或者使用Linux系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    Shell脚本字符串单引号和双引号的区别浅析

    字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。 单引号 代码如下: str=’this is a ...

    shell编程基础 单引号和双引号的区别

    单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反引号③反斜杠,这3种特殊字符不被...

    Shell脚本中单引号(‘)和双引号(“)的使用区别

    在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用”$param”这种带双引号的格式,但也有出现使用’$param’这种带引号的使用的场景,首先大家看一段例子: ...

    linux shell中单引号、双引号、反引号、反斜杠的区别

    shell可以识别4种不同类型的引字符号: 单引号字符' 双引号字符" 反斜杠字符 反引号字符`的区别,学习shell编程的朋友可以看下

    Linux Shell中三种引号的用法及区别

    Linux Shell中有三种引号,分别为双引号(” “)、单引号(‘ ‘)以及反引号(` `)。 其中双引号对字符串中出现的$、”、`和\进行替换;单引号不进行替换,将字符串中所有字符作为普通字符输出,而反引号中字符串作为...

    Shell编程 Bash引号的那点事

    先了解下,在bash脚本中,有三种引号 1. 单引号 ‘ 2. 双引号 “ 3. 反引号 ` 单引号  两个单引号包围起来的字符串就是普通的字符串,它将保留原始的字面意思. 双引号  两个双引号包围起来的字符串,部分特殊字符...

    UNIX命令及SHELL编程

    02_Shell-使用find和xargs.PDF 03_Shell-后台执行命令.PDF 04_Shell-文件名置换.PDF 05_Shell-shell输入与输出.PDF 06_Shell-命令执行顺序.PDF 07_文本过滤-正则表达式介绍.PDF 08_文本过滤-grep 家族.PDF 09...

    shell编程学习笔记

    变量: 变量的赋值和引用 在shell编程中变量没有类型,简称弱类型编程语言,不需要声明,在引用这个变量时会创建它(在变量名前加$符号引用变量的值)。在定义变量时,若String中包含空格、制表符、换行符,需用单...

    shell 编程指南pdf

    第14章 环境和shell变量 132 14.1 什么是shell变量 132 14.2 本地变量 132 14.2.1 显示变量 133 14.2.2 清除变量 133 14.2.3 显示所有本地shell变量 133 14.2.4 结合变量值 134 14.2.5 测试变量是否已经设置 134 ...

    Linux Shell 编程实战.zip

    Shell是Linux的外壳,是Linux的用户界面, Shell为用户提供了输入命令和参数并可得到命令执行结果的环境。用户对Shell理解越深刻, Shell对用户工作的支持就越有力。可以说,熟练掌握Shell编程,能大大提高系统...

    shell 基本语法

    从网上搜集的shell 基本... o 6.1 引号 o 6.2 Here documents * 7 Shell里的函数 * 8 命令行参数 * 9 Shell脚本示例 o 9.1 一般编程步骤 o 9.2 二进制到十进制的转换 o 9.3 文件循环拷贝 * 10 脚本调试

    Bash Shell入门

    3. 反引号(~按键处)括起来的字符串被Shell解释为命令行。执行时首先执行该命令行,然后以命令行的输出结果替换反引号部分。 4. 输入重定向符“<”的作用是把命令的标准输入重新定向到指定文件;输出重定向符“>”...

Global site tag (gtag.js) - Google Analytics