在使用变量的时候,双引号和单引号 如何使用,及其区别:

文章目录


 

        此链接通往 Bash Shell 编程学习的目录导航 ,从入门到放弃,感兴趣的可以去看看:


当你再给变量赋值的时候,值是一串字符串,并且中间有空格,该如何赋值?

使用单双引号:(都可以)

root@zhengzelin:~# a="aaa bbb ccc";echo $a
aaa bbb ccc

root@zhengzelin:~# a='aaa bbb ccc';echo $a
aaa bbb ccc

但是,当你给一个变量赋值的时候,值中包含有另一个变量,如何赋值?

使用双引号:(正确)

root@zhengzelin:~# a="abc $a";echo $a
abc aaa bbb ccc


使用单引号:(错误)
root@zhengzelin:~# a='abc $a';echo $a
abc $a

使用变量时候,单双引号的区别:

★ 单引号:会将单引号内的值,原原本本的赋值给 变量,取消其中特殊符号所代表的的含义(在单引号里为特殊符号他本身);
                   就好比上面举例中的 : a=‘abc $a’;echo $a 输出 abc $a。

★ 双引号:取消空格的作用,保留了双引号中 特殊字符所代表的的含义!


当你的变量的值是一篇有格式的文件的时候,如何保留格式?

root@zhengzelin:~# a=$(cat /etc/passwd)
root@zhengzelin:~# echo $a
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:655
# 本来是一行一行的内容,现在却将多行合并为一行了!


解决办法,使用 双引号:
root@zhengzelin:~# a=$(cat /etc/passwd)
root@zhengzelin:~# echo "$a" | head -n2
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

’ ’ 的使用例子:

[root@www ~]# cat a.txt
1b233 abc
def

[root@www ~]# a=abc
[root@www ~]# b=bbb


[root@www ~]# sed 's/$a/$b/g' a.txt 
1b233 abc
def

[root@www ~]# sed 's/"$a"/"$b"/g' a.txt 
1b233 abc
def

[root@www ~]# sed 's/'$a'/'$b'/g' a.txt 
1b233 bbb
def

你可能感兴趣的:(shell)