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

下面用一个简单的shell程序要说明一下。

debian:~/learn/shell# cat phonebook
Alice Chebba 973-555-2015
Barbara Swingle 201-555-9257
Liz Stachiw 212-555-2298
Susan Goldberg 201-555-7776
Susan Topple 212-555-4932
Tony Iannino 973-555-1295
Stromboli Pizza 973-555-9478
debian:~/learn/shell#

debian:~/learn/shell# cat lu
# Look someone up in the phone book
grep "$1" phonebook
debian:~/learn/shell#

这是正确的lu程序,下面是运行结果。

debian:~/learn/shell# ./lu 'Susan T'
Susan Topple 212-555-4932
debian:~/learn/shell# ./lu Tony
Tony Iannino 973-555-1295
debian:~/learn/shell#

如果lu写成①grep $1 phonebook或者②grep '$1' phonebook,就会出现下面的错误结果(为什么?)。

①的结果:

debian:~/learn/shell# ./lu Tony //这种情况结果正确
Tony Iannino 973-555-1295
debian:~/learn/shell# ./lu 'Susan T' //这种情况结果错误
grep: T: No such file or directory
phonebook:Susan Goldberg 201-555-7776
phonebook:Susan Topple 212-555-4932
debian:~/learn/shell#

②的结果:

debian:~/learn/shell# ./lu Tony //这种情况结果错误
debian:~/learn/shell# ./lu 'Susan T' //这种情况结果也错误
debian:~/learn/shell#

(0)

相关推荐

  • 探索PowerShell(十五) 引号与转义字符

    基础用法 总结说来: 单引号任何情况下都只表示引号内自身的字符.也就是说,单引号内的内容不会进行变量的代换与字符的转义.而在双引号中,则允许进行变量代换和字符转义.在对变量进行代换和字符进行转义的判断上,是由命令最外层的引号决定的. 详细介绍,还是要用示例来说明. 使用双引号输出: 复制代码 代码如下: $a="World" <enter> "Hello, $a" <enter> 运行结果为: 若使用单引号,将命令改为: 复制代码 代码如下:

  • Shell编程 Bash引号的那点事

    先了解下,在bash脚本中,有三种引号 1. 单引号 ' 2. 双引号 " 3. 反引号 ` 单引号         两个单引号包围起来的字符串就是普通的字符串,它将保留原始的字面意思. 双引号         两个双引号包围起来的字符串,部分特殊字符将起到它们的作用.         这些特殊字符有: 美元符$, 反斜杠\, 反引号,  感叹号!. 反引号         两个反引号包围起来的字符串,将作为命令来运行,         执行的输出结果作为该反引号的内容,称为命令替换,     

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

    一.字符串基础知识 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似. 单引号 复制代码 代码如下: str='this is a string' 单引号字符串的限制: •单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的: •单引号字串中不能出现单引号(对单引号使用转义符后也不行). 双引号 复制代码 代码如下: your_name='qinjx' str="Hel

  • Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍

    Shell中的特殊字符有 1.$ 美元符 2.\ 反斜杠 3.` 反引号 4." 双引号 5.< ,>;,*,?,[,] 下面我一一举列说明 一.$符号 1.echo $? 显示的是上一条指令退出状态 2.echo "$?" 效果同上 3.echo '$?' 显示的是$? 4.echo \$? 显示的是$? 5.echo "\$?" 显示的是$? 大家可能已经看出 $符号在双引号中具有特殊意义 双引号对$符号不起作用 而单引号可以将特殊字符的的

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

    1. 单引号 ( '' ) # grep Susan phonebook Susan Goldberg 403-212-4921 Susan Topple 212-234-2343 如果我们想查找的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep会把Goldberg和phonebook当作需要搜索的文件 # grep 'Susan Gold' phonebook Susan Goldberg 403-212-4921 当shel

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

    Linux Shell中有三种引号,分别为双引号(" ").单引号(' ')以及反引号(` `). 其中双引号对字符串中出现的$.''.`和\进行替换:单引号不进行替换,将字符串中所有字符作为普通字符输出,而反引号中字符串作为shell命令执行,并返回执行结果.具体含义如下: 双引号(" "):在双引号中,除了$, '', `和\以外所有的字符都解释成字符本身. 单引号(' '):在单引号中所有的字符包括特殊字符($,'',`和\)都将解释成字符本身而成为普通字符.

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

    在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用"$param"这种带双引号的格式,但也有出现使用'$param'这种带引号的使用的场景,首先大家看一段例子: 复制代码 代码如下: [root@linux ~]# name=TekTea [root@linux ~]# echo $name TekTea [root@linux ~]# sayhello="Hello $name" [root@linux ~

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

    下面用一个简单的shell程序要说明一下. debian:~/learn/shell# cat phonebook Alice Chebba 973-555-2015 Barbara Swingle 201-555-9257 Liz Stachiw 212-555-2298 Susan Goldberg 201-555-7776 Susan Topple 212-555-4932 Tony Iannino 973-555-1295 Stromboli Pizza 973-555-9478 deb

  • 在C语言里单引号和双引号的区别

    -- C语言中的单引号用来表示字符字面量,编译为对应的ASCII码 -- C语言中的双引号用来表示字符串字面量,编译为对应的内存地址 'a'表示字符字面量,在内存中占一个字节,'a'+1表示'a'的ASCII码加1,结果为'b'. "a"表示字符串字面量,在内存中占两个字节,"a"+1表示指针运算,结果指向"a"结束符'\0' 分析:下面这段程序合法吗? char* p1 = 1; // p1指向地址0x00000001 char* p2 = '

  • PHP 单引号与双引号的区别

    1.定义字符串 在PHP中,字符串的定义可以使用单引号,也可以使用双引号.但是必须使用同一种单或双引号来定义字符串,如:'Hello"和"Hello'为非法的字符串定义. 定义字符串时,只有一种引号被视为定义符,即单引号或双引号.于是,如果一个字符串由双引号开始,那么只有双引号被分析器解析.这样,你就可以在双引号串中包含任何其他字符,甚至单引号.下面的引号串都是合法的: Php代码 复制代码 代码如下: $s = "I am a 'single quote string' i

  • javascript单引号和双引号的区别和处理

    单引号和双引号其实没啥区别,看你自己习惯了 复制代码 代码如下: <input type="button" onclick="alert("1")">-------------------不正确 <input type="button" onclick="alert('1')">-------------------正确 双引号中再用双引号要这样: var str = "a

  • jquery 单引号和双引号的区别及使用注意

    可以执行的语法:$("ul li a").filter(":contains('佳能'),:contains('松下'),:contains('卡西欧')").css("color","red"); 错误的语法:$("ul li a").filter(":contains("佳能"),:contains("松下"),:contains("卡西欧&q

  • PowerShell中字符串使用单引号和双引号的区别

    本文介绍PowerShell开发时,在字符串中如何去包含变量.将变量包含在字符串中,最后得到的结果是将变量的值放入到了字符串中. 假如有一个字符串变量:$p = "PowerShell" 那么 $str="Hello $p",这时,$str的值是什么呢?且看下面的演示: 复制代码 代码如下: PS C:\Users\spaybow> $p="PowerShell" PS C:\Users\spaybow> $str="Hel

  • python里的单引号和双引号的有什么作用

    在Python当中表达字符串既可以使用单引号,也可以使用双引号,那两者有什么区别吗? python单引号和双引号的区别 简单来说,在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符串.但是这两种通用的表达方式,除了可以简化程序员的开发,避免出错之外,还有一种好处,就是可以减少转义字符的使用,使程序看起来更简洁,更清晰. 更多学习内容,请点击python学习网. 举个两个例子: 1.包含单引号的字符串 假如你想定义一个字符串my_str,其值为: I'm a student,则

  • PHP的单引号和双引号 字符串效率

    简单的回答,显然是苍白无力的. 今天我们来做个实验,看看到底单引号和双引号有什么区别,谁快,谁慢. 测试代码如下: 复制代码 代码如下: <?php $single_quotes = 'This is a String'; $double_quotes = "This is a String"; echo $single_quotes; echo $double_quotes; $var = 'String'; $single_quotes_var = 'This is a '.

  • 替换php字符串中的单引号为双引号的方法

    实例如下: $param = "{'id':'12', 'name':'hi'}"; $new = preg_replace('/\"/', '"', $param); 以上这篇替换php字符串中的单引号为双引号的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

随机推荐