1. 程式人生 > >《shell編程實戰》第3章shell變量基礎(下)

《shell編程實戰》第3章shell變量基礎(下)

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真的是一門語言啊!

《shell編程實戰》第3章shell變量基礎(下)