shell单引号、双引号和反引号的区别

1.

引用

引用指将字符串用引用符号括起来,以防止特殊字符被Shell脚本重解释为其他意义,特殊字符是指除了字面意思之外还可以解释为其他意思的字符

 

符号名称意义

“” 双引号引用除美圆符号($)、反引号(`)和反斜线(\)之外的所有字符

‘’ 单引号 引用所有字符

`` 反引号 Shell将反引号中内容解释为系统命令

\ 反斜线转义符,屏蔽下一个字符的特殊意义

 

全引用(单引用)和部分引用(双引用)

双引号引用除美圆符号($)、反引号(`)和反斜线(\)之外的所有字符,即$`\在双引号中仍被解释为特殊意义

在双引号中保持$符号的特殊意义可以引用变量,如“$variable”表示以变量值替换变量名

 

命令替换

`Linux 命令`

$( Linux 命令)

 

转义

反斜线符号(\)表示转义,当反斜线后面的一个字符具有特殊意义时,反斜线将屏蔽下一个字符的特殊意义而已字面意义解析它

 

 

2.

反引号位 (`) 位于键盘的Tab键的上方、1键的左方。注意与单引号(')位于Enter键的左方的区别。
  在Linux中起着命令替换的作用。命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。
  如下,shell会执行反引号中的date命令,把结果插入到echo命令显示的内容中。
  [root@localhost sh]#echo The date is `date`
  The date is 2011年 03月 14日 星期一 21:15:43 CST
  
  单引号、双引号用于用户把带有空格的字符串赋值给变量时的分界符。
  [root@localhost sh]#str="Today is Monday"
  [root@localhost sh]#echo $str
  Today is Monday
  如果没有单引号或双引号,shell会把空格后的字符串解释为命令。
  [root@localhost sh]#str=Today is Monday
  bash: is: command notfound
  单引号和双引号的区别。单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括$、\、`
  [root@localhost sh]#testvalue=100
  [root@localhost sh]#echo 'The testvalue is $testvalue'
  The testvalue is$testvalue
  [root@localhost sh]#echo "The testvalue is $testvalue"
  The testvalue is 100

 

3.$variable与“$variable”的区别

      $variable用引号括起来表示$variable的值用对应的引号括起来!而直接$variable则仅仅是简单的$variable的值(variable1=$variable2时除外,即用一个变量赋值给另一个变量时除外,这个时候相当于variable1=”$variable2”)。

      例:

脚本:test.sh

#!/bin/sh

testV1="            "

echo"testV1 is>>>"$testV1"<<<"

echo"testV1 is>>>""$testV1""<<<"

#相当于if [  ];,结果为false

if [ $testV1];then

        echo "testV1 1 is not blank"

fi

#相当于if [ "         " ],结果为true

if ["$testV1" ];then

        echo "testV1 2 is not blank"

fi

testV2=" ab c "

#相当于if [ " a b c " ],结果为true

if ["$testV2" ];then

        echo "testV2 is ' a b c '"

fi

 

#相当于三个参数:if [ a b c ] ,参数个数错误,所以会抛错

if [ $testV2];then

        echo"fail>>>>>>"

fi

#相当于有三个参数printf"testV2 is>>>'%s','%s','%s' \n" a b c

printf"testV2 is>>>'%s','%s','%s' \n"$testV2

#相当于testV3="$testV2"

testV3=$testV2

echo"testV3 is>>>"$testV3

 

执行结果:

testV1is>>> <<<

testV1is>>>            <<<

testV1 2 is notblank

testV2 is ' a bc '

test.sh: line23: [: b: binary operator expected

testV2is>>>'a','b','c'

testV3is>>> a b c

 

      

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值