文章目录
此链接通往 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