《shell编程实战》第3章shell变量基础(下)

1、设置登录提示的两种方法
(1)/etc/motd
[root@thzzc1994 thzzc]# echo this is thzzc test linux >/etc/motd
[root@thzzc1994 thzzc]# cat /etc/motd
this is thzzc test linux
(2)/etc/profile.d
[root@thzzc1994 home]# echo echo this is thzzc test linux >/etc/profile.d/test.sh
[root@thzzc1994 home]# cat /etc/profile.d/test.sh
echo this is thzzc test linux
2、单引号、双引号、不加引号的区别示例
(1)[root@thzzc1994 ~]# cat test.sh
a=192.168.1.1
b='192.168.1.1'
c="192.168.1.1"
echo a=$a
echo b=$b
echo c=$c
[root@thzzc1994 ~]# sh test.sh
a=192.168.1.1
b=192.168.1.1
c=192.168.1.1
(2)[root@thzzc1994 ~]# cat test.sh
a=192.168.1.1
a=192.168.1.1-$a
b='192.168.1.1-$a'
c="192.168.1.1-$a"
echo a=$a
echo b=$b
echo c=$c
[root@thzzc1994 ~]# sh test.sh
a=192.168.1.1-192.168.1.1
b=192.168.1.1-$a
c=192.168.1.1-192.168.1.1-192.168.1.1
3、awk的单引号、双引号反常情况
[root@thzzc1994 ~]# oldboy=123
[root@thzzc1994 ~]# awk 'BEGIN {print "$oldboy"}'
$oldboy
[root@thzzc1994 ~]# awk 'BEGIN {print $oldboy}'

[root@thzzc1994 ~]# awk 'BEGIN {print '$oldboy'}'
123
[root@thzzc1994 ~]# awk 'BEGIN {print "'$oldboy'"}'
123
使用awk时,情况刚好相反,单引号、双+单解析变量,双引号原样输出。什么都不加输出为空。
总结:若想原样输出就用双引号,解析变量就用双+单('xxx'")
老男孩为了方便,一般都不直接用awk了,而是采用管道的方法,先echo变量再让管道通过$0传参。
[root@thzzc1994 ~]# oldboy=123
[root@thzzc1994 ~]# echo $oldboy |awk '{print $0}'
123
[root@thzzc1994 ~]# echo '$oldboy' |awk '{print $0}'
$oldboy
[root@thzzc1994 ~]# echo "$oldboy" |awk '{print $0}'
123
sed和grep都和之前的结论是符合的,就awk古怪些。awk真的是一门语言啊!

猜你喜欢

转载自blog.51cto.com/10249069/2113222