全文剖析Shell本地变量的知识点

服务器

浏览数:42

2019-10-9

一、本地变量
1、使用场景:本地变量在用户当前shell生存期的脚本中使用
2、定义赋值的几种方式:

                          变量名=值         #赋值时不加引号
                          变量名=‘值’       #赋值时加单引号
                          变量名=“值”      #赋值时加双引号

3、定义变量名以及赋值时的要求

变量名:一般是字母、数字、下划线组成,可以以字母或者下划线开头,不能以数字开头,建议采用驼峰语法来编辑变量名(即当变量名是多个单词时,除了第一个单词首字母是小写,其他单词的首字母都是大写)
赋值:可以用单引号、双引号以及不加任何引号,但是三者的含义是不同的

4、三种赋值方式的不同之处

无引号 :赋值时,

                          如果值中有空格,则会造成赋值失败
                          如果值中有命令、其他变量,则会先把命令和变量解析后再输出
                        如果字符串中带有空格等特殊字符,则会赋值失败

单引号:赋值时,

                         所见即所得,即输出时会将单引号内的所有内容按原样输出,就是你看到什么就输出什么,被称为“强引用”

双引号:赋值时,

                        输出双引号内的室友内容
                        如果值中有命令、其他变量、特殊转移符等,会先把前三者解析出来再输出,是⭐️推荐的用法⭐️,被称为“弱引用”

反引号:顺带说一下,反引号用法。一般用于引用命令,执行的时候命令会被执行,但是一般不推荐用反引号引用命令的方式,而是推荐用 $() 这样的方式来引用命令。

5、变量定义以及赋值经验小结

1)若变量内容为连续的数字或者字符串,赋值时,可不加任何引号,例如:abc=123
2)若变量的内容很多时,且有空格和希望被解析的变量,就必须使用双引号,例如:abc=”/etc/rc.local $USER”
3)若希望原样输出变量中的内容时必须采用单引号进行复制,例如:abc=’$USER’
4)若要引用命令,则用反引号把赋值的命令反引起来,但是建议用$()的方式,而不是反引号,例如:abc=ls abc=$(ls)
5)使用“echo $变量名”即可以输出变量的内容,也可以用printf代替echo输出更复杂的格式内容
6)当变量后面连接有其他字符的时候,必须给变量加上大括号{},例如:${abc}_def
7)没有特殊要求时,一律使用双引号

6、三剑客(grep/awk/sed)取用Shell变量时的特殊用法

grep:按前面的正常用法
sed:按前面的正常用法
awk:⭐️不能按前面的正常用法⭐️,awk取用shell变量时的格式例子:

                            NB="dabiaoge"
                            echo "$NB" |  awk  '{print $0}'
                            echo '$NB'  |  awk  '{print $0}'
                            echo  $NB   |  awk  '{print $0}'

                            NB=`pwd`   或者  NB=$(pwd)
                            echo "$NB" |  awk  '{print $0}'
                            echo '$NB'  |  awk  '{print $0}'
                            echo  $NB   |  awk  '{print $0}'

二、我是大表哥,我为自己带盐,以后会不定时更新,请支持正版,盗链可耻
我的博客是:https://blog.51cto.com
各位朋友有什么不懂以及认为有什么错误之处,请在下方留言,谢谢!

作者:Mr大表哥