精华内容
下载资源
问答
  • 在编写 shell 脚本或输入命令时,你可能已经注意到大多数命令都可以使用单引号 或双引号, 这不仅适用于 shell 脚本,而且适用于所有 Bash 命令, 但是两种类型的引号以及 Bash shell 解释它的方式之间存在一定的...

    在编写 shell 脚本或输入命令时,你可能已经注意到大多数命令都可以使用单引号 或双引号, 这不仅适用于 shell 脚本,而且适用于所有 Bash 命令, 但是两种类型的引号以及 Bash shell 解释它的方式之间存在一定的差异,下面将介绍它们之间的不同

    单引号

    用单引号 ’ ' 括起来的字符会保留引号内每个字符的字面值

    简而言之,shell 将逐字解释单引号内的封闭文本,并且不会插入任何内容,包括变量、反引号、某些 \ 转义符等

    单引号中的任何字符都没有特殊含义, 当你不想使用转义字符来更改 shell 脚本解释输入字符串参数方式时,就会很方便

    双引号

    双引号类似于单引号,只是它允许 shell 解释美元符号 ( $ )、反引号 ( ` )、反斜杠 ( \ ) 和感叹号 ( ! ), 这些字符与双引号一起使用时具有特殊含义,并且在显示之前对其进行评估

    双引号可以通过在双引号前加上反斜杠来使用其自身

    实例

    下面通过几个实例来说明 单引号 和 双引号之间的一些区别

    • 实例1

    新建 shell 脚本 t1.sh,内容如下

    #!/bin/bash
    
    a=98
    echo "$a"
    echo '$a'
    

    执行 ./t1.sh命令,结果如下

    [root@localhost quotes_test]# ./t1.sh 
    98
    $a
    

    从结果可以看出,双引号中的 $a 被解释为变量 a 的值

    但是单引号中的 $a 只是原样输出,单引号不会解释其中的 $ 以及 a 字符

    • 实例2

    双引号中的 \\n 会被转义成换行符\n,但在单引号内,\n 被当成普通字符与同一行的其他字符一起显示

    • 实例3

    新建 shell 脚本 t2.sh, 内容如下

    #!/bin/bash
    
    ary[0]=8
    echo "${ary[0]}"
    echo '${ary[0]}'
    

    执行脚本,结果如下

    [root@localhost quotes_test]# ./t2.sh 
    8
    ${ary[0]}
    

    从结果可以看出,当 ${ary[0]} 用双引号括起来时,表示数组的第一个元素,所以输出 8

    但是,被单引号括起来时,被当做单纯的字符输出,并不会解释为数组的第一个元素

    • 实例4

    新建 shell 脚本 t3.sh, 内容如下

    #!/bin/bash
    
    a=45
    echo "'$a'"
    echo '"$a"'
    

    执行脚本,结果如下

    [root@localhost quotes_test]# ./t3.sh 
    '45'
    "$a"
    

    由上面的结果可知,单引号在双引号内没有特殊的含义,因此,即使 $a 在单引号内,也还是会解释成 45

    但是,当双引号在单引号内时,即使 $a 位于双引号内,也不会对变量 a 求值, 还是按照普通字符输出

    • 实例5

    新建 shell 脚本 t4.sh, 内容如下

    #!/bin/bash
    
    a=" $(printf hello) "  # 相当于 " `printf hello` "
    b=' $(printf hello) '  # 相当于 ' `printf hello` '
    echo $a
    echo $b
    

    执行脚本,结果如下

    [root@localhost quotes_test]# ./t4.sh 
    hello
    $(printf hello)
    

    从结果可以知道,双引号中的 $(printf hello) 会被解释成 printf hello 命令,执行 echo $a命令相当于执行了 printf hello, 结果输出 hello

    单引号中的 $(printf hello) ,只是表示普通字符而已,所以 echo $b命令的结果是 $(printf hello) 字符的原样输出

    小结

    本文介绍了 shell 中单引号和双引号的区别,主要是通过实例的方式来展示他们之间的不同点,熟悉了它们的不同点后,在编写 shell 脚本过程中,就不会在单双引号上出错了

    展开全文
  • c语言中的单引号和双引号可是有很大区别的,使用之前一定要了解他们之间到底有什么不同,下面小编就给大家详细的介绍一下吧,对此还不是很了解的朋友可以过来参考下问题:从c++文件中将std:string转换为char*后,...

    c语言中的单引号和双引号可是有很大区别的,使用之前一定要了解他们之间到底有什么不同,下面小编就给大家详细的介绍一下吧,对此还不是很了解的朋友可以过来参考下

    问题:从c++文件中将std:string转换为char*后,返回包含IP地址的char*,需要将该字符串char*中的IP地址提取出来;

    解决办法:1. 解决思路:IP地址最长为12字符+3句点=15字符,一般性表示为192.168.111.111;

    可以从第一个字符开始解析,当不是'.'时,将所有字符保存下来,然后把所有保存下来的字符转换为16进制就可以了;

    2. 程序如下:

    typedef struct {

    char addr_ipv4[4];

    } IPADDR_IPV4;

    #include

    // Function: To extract HEX value of IP address from string expression.

    IPADDR_IPV4 parse_IPString(const char *str, u8 strlen) {

    IPADDR_IPV4 ipv4;

    char tmpBuf[4] = {0};

    u8 k;

    u8 inx = 0;

    u8 j = 0;

    // Dprintf("The ch_ip is:%s\n", ch_ip);

    for (k=0; k

    if (str[k] != '.') {

    // Dprintf("k-inx: %d\n", k-inx);

    memcpy(&tmpBuf[k-inx], &str[k], 1);

    }

    else {

    inx = k + 1;

    // Dprintf("inx: %d, tmpBuf: %s\n", inx, tmpBuf);

    ipv4.addr_ipv4[j++] = strtol(tmpBuf, NULL, 10);

    memset(tmpBuf, 0, sizeof(tmpBuf));

    continue;

    }

    // Dprintf("tmpBuf: %s\n", tmpBuf);

    ipv4.addr_ipv4[j] = strtol(tmpBuf, NULL, 10);

    }

    // Dprintf("ipv4 is: ");

    // for (k=0; k

    //  Dprintf("%d", ipv4.addr_ipv4[k]);

    // }

    // Dprintf("\n");

    return ipv4;

    }

    应用如下:

    char* ch_ip = NULL;

    IPADDR_IPV4 ipv4Addr;

    ch_ip = (char*)malloc(16);

    memset(ch_ip, 0, 16);

    // parse IP address

    ch_ip = getIPAddr();

    // convert IP address from string to HEX expression

    ipv4Addr = parse_IPString(ch_ip, strlen(ch_ip));

    3. 注意事项:原来进行字符比较的时候,用的是if (str[k] != ".")而不是if (str[k] != '.'),结果一直不对。

    后来反复 查找原因,才知道单引号''和双引号“”的区别:

    (1)。含义不同。单引号引起的一个字符代表一个整数,整数值对应于该字符在ASCII字符集中的序列值;

    双引号引起的都是字符串,哪怕只有一个字符也是字符串,双引号引起的一个字符代表一个指向无名数组起始字符的指针;

    比如:'.'代表十进制46,十六进制0x2E;

    而"."代表指向起始字符为"."的某数组的指针;

    (2)。大小不同。单引号引起的一个字符大小就是一个字节;

    双引号引起的一个字符大小是两个字节,因为双引号引起的字符串会在字符串的末尾添加一个0x00作为字符串的结束标识。

    在本人的程序中正确取到了IP地址。

    问题解决。

    展开全文
  • 一、单引号和双引号首先,单引号和...他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的‘$‘(参数替换)和‘`‘(命令替换)是例外。所以,两者基本上没有什么区别,除非在内容中遇到了参数替...

    一、单引号和双引号

    首先,单引号和双引号,都是为了解决中间有空格的问题。

    因为空格在Linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错。为了避免这个问题,因此就产生了单引号和双引号。他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的‘$‘(参数替换)和‘`‘(命令替换)是例外。所以,两者基本上没有什么区别,除非在内容中遇到了参数替换符$和命令替换符`。

    所以下面的结果:

    num=3

    echo ‘$num’

    $num

    echo “$num”

    3

    所以,如果需要在双引号””里面使用这两种符号,需要用反斜杠转义。

    二、反引号``

    这个东西的用法,我百度了一下,和$()是一样的。在执行一条命令时,会先将其中的 ``,或者是$() 中的语句当作命令执行一遍,再将结果加入到原命令中重新执行,例如:

    echo `ls`

    会先执行 ls 得到xx.sh等,再替换原命令为:

    echo xx.sh

    最后执行结果为

    xx.sh

    那么,平时我们遇到的把一堆命令的执行结果输出到一个变量中,需要用这个命令替换符括起来,也就可以理解了。

    这里又涉及到了一个问题,虽然不少系统工程师在使用替换功能时,喜欢使用反引号将命令括起来。但是根据POSIX规范,要求系统工程师采用的是$(命令)的形式。所以,我们最好还是遵循这个规范,少用``,多用$()

    三、小括号,中括号,和大括号的区别

    那么,下面又涉及到了一个问题,就是小括号,中括号,和大括号的区别。

    先说说小括号和大括号的区别。这两者,实际上是“命令群组”的概念,也就是commandgroup。

    ( ) 把 command group 放在subshell去执行,也叫做 nested sub-shell。

    { } 则是在同一个 shell 內完成,也称为 non-namedcommand group。

    所以说,如果在shell里面执行“函数”,需要用到{},实际上也就是一个命令群组么。

    不过,根据实测,test=$(ls -a)可以执行,但是test=${ls–a}语法上面是有错误的。估计也和上面所说的原因有关。

    另外,从网上摘录的区别如下:

    A,()只是对一串命令重新开一个子shell进行执行

    B,{}对一串命令在当前shell执行

    C,()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开

    D,()最后一个命令可以不用分号

    E,{}最后一个命令要用分号

    F,{}的第一个命令和左括号之间必须要有一个空格

    G,()里的各命令不必和括号有空格

    H,()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令

    两个括号(()),是代表算数扩展,就是对其包括的东西进行标准的算数计算——注意,不能算浮点数,如果需要算浮点数,需要用bc做。

    至于中括号[],感觉作用就是用来比较的。比如放在if语句里面,while语句里面,等等。

    这里引出来[..]和[[…]]的区别:(摘自网上,实测证实):使用[[... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误.比如,&&, ||, 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话,会报错。

    展开全文
  • Oracle中的双引号与单引号在Oracle中双引号的作用是:如果创建对象的时候,对象名、字段名加双引号,则表示Oracle将严格区分大小写,否则Oracl都默认大写;双引号一般是用来转义的,如果alias里面有空格或其它保留...

    Oracle中的双引号与单引号

    在Oracle中

    双引号的作用是:如果创建对象的时候,对象名、字段名加双引号,则表示Oracle将严格区分大小写,否则Oracl都默认大写;双引号一般是用来转义的,如果alias里面有空格或其它保留符号,必须使用双引号。

    而单引号则表示:这个加了单引号的字段是一个字类似字符串,并不区分大小写;单引号是用来特制的,比如字符串的引用,日期字符串的引用,都必须包括在单引号中,可以参与运算或其它表达式中。

    两者不可混用,其中,两个单引号可以作为单引号的转义使用,意思就是一个真正的、没有特殊功能的单引号。例如 select substr('I''am a pig',1,4)。

    在SQL中,表示字符串得引号强烈建议使用单引号(')。虽然MySQL也可以使用双引号("),但是为了和SQL Server和Oracle统一,建议都使用单引号。如果在字符串中也有单引号出现的话,在SQL中需要将其替换为两个单引号(''),DBMS会将其解释为一个单引号的。

    关于SQL的换行符和字符串连接符,在MySQL、SQL Server和Oracle中均有不同,下面以列表显示。

    MySQL

    SQL Server

    Oracle

    换行符

    \n或\r\n或CHAR(10)

    CHAR(13)

    CHR(10)

    字符串连接符

    CONCAT()

    +

    ||或CONCAT()

    单引号用于标识字符与数字的区别

    例如

    select * from table_name where id=1;这种代表查询的是数字

    select * from table_name where id='1';这种代表查询的是字符

    如果是双引号是这样,假如你有个表的字段叫sysdate,因为sysdate属于oracle中的特有字符,但你要查询这个字段的时候

    select "sysdate" from table_name;

    但是你要是用

    select 'sysdate' from table_name;

    那么你查出来的就是字符串,结果是sysdate。

    相关文档:

    命令行维护Oracle AWR

    有时候由于种种原因,只能使用命令行来维护Oracle10g。当然我们依然可以使用statspack,但由于statspack功能不如AWR,而

    且如果使用两种性能诊断工具也是一种浪费。因此手动维护AWR还是有必要的,下面列出一些常用的AWR命令,以备后查。

    1、修改AWR的触发频率

    ......

    Tablespace

    ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额.

    因此,在创建对象之前,首先要分配存储空间.

    分配存 ......

    Oracle 三种集合数据类型的比较:

    PL/SQL中没有数组的概念,他的集合数据类型和数组是相似的。在7.3以前的版本中只有一种集合,称为PL/SQL表,在这之后又有两种集合数据类型:嵌套表和varray。其中varray集合中的元素是有数量限制的,index_by表和嵌套表是没有这个限制的。index-by表是稀疏的,也就是说下标可以不连续 ......

    Oracle Database 10g 提供了一个显著改进的工具:自动工作负载信息库 (AWR:Automatic Workload Repository)。Oracle 建议用户用这个取代 Statspack。AWR 实质上是一个 Oracle 的内置工具,它采集与性能相关的统计数据,并从那些统计数据中导出性能量度,以跟踪潜在的问题。与 Statspack 不同,快照由一个称为 MMON 的新的后 ......

    展开全文
  • 双引号怎么打出来

    2021-06-11 10:10:55
    双引号怎么打出来要打双引号,就要先有中文输入法,然后切换好中文符号(中问的句号是空心的,英文句号是实心的),然后按SHIFT+'键就可以了,'在字母L的右边第二个键。打第一个是开双引“ ,再打一个就是闭双引”了。...
  • C语言中单引号与双引号的区别

    千次阅读 2021-05-18 11:09:03
    C语言中单引号与双引号的区别单引号和双引号在C中的意义完全不同,包围在单引号中的一个字符只是编写整数的另一种方法。这个整数是给定的字符在实现的对照序列中的一个对应的值,即ASCII码值。以下是小编为大家搜索...
  • 一、引号定义字符串在Php中,通常一个字符串被定义在一对引号中,如:'I am a ...因此,所有字符串必须使用同一种单或者双引号来定义开始和结束。例如,下面的字串定义是不合法的:"I am not a valid string since ...
  • 01 经典解释单引号:所见即所得双引号:所见非所得,它会先把变量解析之后,再输出反引号(``):命令替换,通常用于把命令输出结果传给入变量中反斜杠( \ ):转义字符/逃脱字符,Linux如果echo要让转义字符发生作用,...
  • mysql单引号和双引号的用法这就要从双引号和单引号的作用讲起:双引号里面的字段会经过编译器解释然后再当作HTML代码输出,但是单引号里面的不需要解释,直接输出。例如:$abc='I love u';echo $abc //结果是:I love...
  • 双引号和句号的位置

    千次阅读 2021-02-05 07:50:45
    通过引号的使用通常能够表达一些特殊含义,从而使语句在整个语言环境里产生不同的意境。因此在使用中,要注意引文末尾标点的位置要注意,文章中如有引用的话要独立来用,而末尾点号应放在引号里边。此外若引用的内容...
  • 双引号:·在字串中使用变量这个功能让你无须使用连接符号来粘和大量的简单字符串。PHP允许我们在双引号串中直接包含字串变量,我们可以发现下面的两个字串的处理结果是相同的。·斜杠和SQL语句生成HTML代码或SQL...
  • c语言中单引号和双引号的区别引导语:单引号和双引号都可以作为字符串的开始符和关闭符,并且只能‍同一种单或者双引号来定义开始和结束。以下是百分网小编分享给大家的c语言中单引号和双引号的区别,欢迎阅读!问题:...
  • 最大的区别是: 双引号会替换变量的值,而单引号会把它当做字符串输出。 例如: $name=string; echo 字符串 . $name; echo 字符串 . $name; ? 结果: 字符串$name 字符串sPHP单引号及双引号均可以修饰字符串类型的...
  • 1. 单引号强引用,将引用部分... 双引号弱引用,与单引号类似,但不会屏蔽以下5个字符:美元符$、反斜杠\、反引号`、单引号'、双引号";当需要屏蔽着5个字符的含义只作为普通字符时,只需要在前面加\即可。[kevin@h...
  • 最大的区别是: 双引号会替换变量的值,而单引号会把它当做字符串输出。例如:$name="string";echo " 字符串" . '$name';echo "字符串" . "$name";?>结果:字符串$name字符串string转义字符,顾名思义会将规定的...
  • 字符串是由单引号(')或双引号(")字符引起的字节或字符序列。例子:'a string'"another string"彼此相邻的带引号的字符串被串联为单个字符串。以下几行是等效的:'a string''a' ' ' 'string'如果SQ用启了LANSI_QUOTES...
  • // '和CSS p:before {content: '\27'} /* ' */在JavaScript中,双引号或单引号具有相同的含义(除了事实,您需要反斜杠 - 转义不同的字符)。 在CSS中它是相同的,但反斜杠是不同的,因为它们通常预期后面是十六进制...
  • 例解引号的用法作者: 江苏省盐城市明达中学朱庆和引号的形式为双引号““””和单引号“‘'”。它在标点符号中属于标号。一般用法有下列几种:一、表示行文中直接引用的话。例如:①为了经常提醒自己,鲁迅还在书签...
  • 在Oracle中:双引号:假如建立对象的时候,对象名、字段名加双引号,则示意 Oracle将严格区分大小写,否则Oracl都默认大写。单引号:这个加了单引号的字段是一个字类似字符串,并不区分大小写。单引号用于标识字符与...
  • shell中的双引号与$

    2021-12-01 21:26:31
    文章目录什么时候用双引号$要不要跟{}字符串中的变量怎么才能被正确解析? 什么时候用双引号 当参数值本身就带有空格时,如果不加双引号把参数值括起来,那么这个参数值可能会被扩展为多个参数值,而丢失原本的完整...
  • 为了匹配文字上的反斜杠,许多人和PHP手册都说:总是这样对它进行三倍转义\\\\注意事项 :单引号和双引号的PHP字符串具有反斜杠的特殊含义。因此,如果\必须与正则表达式匹配\\,则必须在PHP代码中使用"\\\\"或'\\\\...
  • 省略号〔……〕:它的主要用法有:(1)表示文中的省略部分。(2)表示思维的进行或跳跃。(3)表示话语的断续。(4)表示心情的矛盾。(5)省略号的前面不是一个完整的句子时,一般...……”(7)省略号的后面一般除了可用引号...
  • 双引号引起来的字符串,代表的是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制值为零的字符'\0'初始化。 printf("Hello World\n"); /*两个语句等价*/ char hello[]={'H','e',...
  • 在PHP中,一个字符串可以有4种不同的表示方法,我们主要使用单引号,或者双引号来表示:1, 单引号2, 双引号3, heredoc 语法结构4, nowdoc 语法结构(自 PHP 5.3.0 起)本文只介绍1和2,即单引号和双引号在表示字符...
  • C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同。以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!C语言常量中字元与字串 除了单...
  • 以下两条命令虽然执行结果相同,...由于换行符(回车)在无引号模式,会导致命令直接执行,所以也可以说是一个特殊字符。因此 "\回车符" 也会失去特殊含义。 转义前表示 \* \$ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,103
精华内容 28,441
关键字:

双引号含义