单引号和双引号

1.单引号和双引号的区别

   str=yalong
  echo "The str is $str" >>  The str is yalong #双引号中的$str被其值yalong替换,即双引号允许变量替换。
  echo 'The str is $str'  >>  The str is $str #单引号中的内容被原样输出,即单引号不允许变量替换。

 总结:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

           单引号字串中不能出现单引号(对单引号使用转义符后也不行)

          双引号里可以有变量,允许变量替换
          双引号里可以出现转义字符

 2.不用引号和用引号(单引号或者双引号)的区别

[robot@hadoop103 ~]$ A=HELLO WORLD
bash: WORLD: command not found...
[robot@hadoop103 ~]$ A='HELLO WORLD'
[robot@hadoop103 ~]$ echo $A
HELLO WORLD
[robot@hadoop103 ~]$ A=HELLO \t world
bash: t: command not found...
[robot@hadoop103 ~]$ A='hello \t world'
[robot@hadoop103 ~]$ echo $A
hello \t world
[robot@hadoop103 ~]$ A="hello \t world"
[robot@hadoop103 ~]$ echo $A
hello \t world
总结:定义变量时,若等号右侧的字符串中含有空格或者制表符,换行符时,要用引号将打算赋值的字符串括起,否则报错。

关于转义字符\的使用:
echo  "hello world" >>  hello world  #这里面双引号就是双引号,不输出
echo  \"hello world\" >> "hello world"  #输出双引号,这里用了转义字符\所以双引号失去了引号功能,成了字符串。
3.反引号的使用``,执行里面的命令
[robot@hadoop103 ~]$ echo aa=`date +%H` #这里用的是反转义字符,esc下面的那个符号。
aa=23
[robot@hadoop103 ~]$ echo aa="date+%H" #这里用的是双引号,命令失效。
aa=date+%H
A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
A=$(ls -la) 等价于反引号
A=`pwd` & echo $A
A=$(pwd) $ echo $A

————————————————
版权声明:本文为CSDN博主「牛大财有大才」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26442553/article/details/79905735

猜你喜欢

转载自www.cnblogs.com/kakaisgood/p/11818977.html