文章目录
此链接通往Bash Shell 编程学习的目录导航,从入门到放弃,感兴趣的可以去看看:
当你再给变量赋值的时候,值是一串字符串,并且中间有空格,该如何赋值?
使用单双引号:(都可以)root@zhengzelin:~# a="aaa bbb ccc";echo $aaaa bbb cccroot@zhengzelin:~# a='aaa bbb ccc';echo $aaaa bbb ccc
但是,当你给一个变量赋值的时候,值中包含有另一个变量,如何赋值?
使用双引号:(正确)root@zhengzelin:~# a="abc $a";echo $aabc aaa bbb ccc使用单引号:(错误)root@zhengzelin:~# a='abc $a';echo $aabc $a
使用变量时候,单双引号的区别:
★ 单引号:会将单引号内的值,原原本本的赋值给 变量,取消其中特殊符号所代表的的含义(在单引号里为特殊符号他本身);
就好比上面举例中的 : a=‘abc $a’;echo $a 输出 abc $a。
★ 双引号:取消空格的作用,保留了双引号中 特殊字符所代表的的含义!
当你的变量的值是一篇有格式的文件的时候,如何保留格式?
root@zhengzelin:~# a=$(cat /etc/passwd)root@zhengzelin:~# echo $aroot: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 -n2root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
’ ’ 的使用例子:
[root@www ~]# cat a.txt1b233 abcdef[root@www ~]# a=abc[root@www ~]# b=bbb[root@www ~]# sed 's/$a/$b/g' a.txt 1b233 abcdef[root@www ~]# sed 's/"$a"/"$b"/g' a.txt 1b233 abcdef[root@www ~]# sed 's/'$a'/'$b'/g' a.txt 1b233 bbbdef