首先了解一下什么是变量
- 变量
简单的说,变量就是让某一个特定字串代表不固定的内容。举个数学例子,那就是:“ y = ax + b”这东西,在等号左边的 (y) 就是变量,在等号右边的 (ax+b) 就是变量内容。要注意的是,左边是未知数,右边是已知数。讲的更简单一点,我们可以“用一个简单的 “字眼” 来取代另一个比较复杂或者是容易变动的数据。这样做最大的好处就是“方便”!
简而言之:“变量就是以一组文字或符号等,来取代一些设置或者是一串保留的数据”,例如:设置了“myname”就是“Buster”,所以当你读取 myname 这个变量的时候,系统自然就会知道,那就是 Buster。可以通过 echo 来显示变量。
变量的定义:
- 变量即在程序运行过程中它的值是允许改变的量
- 变量是用一串固定的字符来标示不固定的值的一种方法
- 变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息
- 在shell中变量是不能永久保存在系统中的,必须在文件中声明
变量的种类
- 在shell中变量分为环境级变量,用户级变量,系统级变量。
- 环境级变量只在当前shell中生效,shell关闭变量丢失
- 用户级变量写在用户的骨文件中,只针对当前用户生效
- 系统级变量被写在系统的配置文件/etc/profile或者/etc/profile.d/中,对于所有用户都生效
1. 变量的设置规则
- 变量与变量内容以一个等号“=”来链接,如下所示:“myname=Buster”等号两边不能直接接空白字符,如下所示为错误:“myname = Buster”或“myname=Buster Zr”
- 变量名称只能是英文字母与数字,但是开头字符不能是数字,如下为错误:“2myname=Buster”
- 变量字符的转译
\ # 转译单个字符e
" " # 若引用,批量转译" " 中出现的字符
' ' # 强引用,批量转译" " 中出现的字符
# " " 与 ' ' 的区别在于," " 不能转译“\”,“`”,“!”,“$”
${} # 变量声明
示例如下:
变量内容若有空白字符可使用双引号或单引号将变量内容结合起来,但双引号内的特殊字符如 $ 等,可以保有原本的特性
双引号
单引号
变量声明
2. 环境变量
环境变量:一般是指系统和当前用户可以对操作环境的运行进行相应设置的字符串。
环境变量分为用户变量和系统变量。
一般情况下,用户变量只对某个用户有效,而系统变量则对所有用户均有效。
2.1环境变量的设置(export)
- 当你登陆 Linux 并取得一个 bash 之后,你的 bash 就是一个独立的程序,这个程序的识别使用的一个 PID。接下来你在这个 bash 下面所下达的任何指令都是由这个 bash 所衍生出来的,那些被下达的指令就被称为子程序了。我们在原本的 bash 下面执行另一个 bash,结果操作的环境会跑到第二个 bash 去(就是子程序),那原本的 bash 就会在暂停的情况(就是 sleep)。整个指令运行的环境是实线的部分!若要回到原本的 bash 去,就只有将第二个 bash 结束掉(下达 exit 或 logout) 才行。
- 因为子程序仅会继承父程序的环境变量,子程序不会继承父程序的自订变量。所以在原本 bash 的自订变量在进入了子程序后就会消失不见,一直到你离开子程序并回到原本的父程序后,此变量才会又出现。
- 可通过 export 将自订变量转成环境变量。
即当你在 shell 中直接执行 a=1,设定变量 a=1 ,但是当你在此 shell 下重新开启一个 shell 此变量将不会被识别,此