什么是Shell变量
在初等数学数学方程式中,我们会经常碰到类似于这样的方程式:y=x+1 ,等号左右两边的x和y称之为未知数。在编程里面它们他们则代表变量名与变量值。
通过该示例,我们可以得出一个结论:简单来说,变量是编程中最基本的存储单位,它会暂时存储用户放进去的数据,而存储的数据位于内存空间中,通过正确调用内存空间中变量名字即可以取出与之对应的数据。在Shell中定义变量和取值如下所示:
变量注意事项
1、定义变量的方法,先定义变量名,紧跟赋值操作符=,最后是变量对应的值,中间不能存在空格,否则会出现报错,这一点是跟其他语言比较大的区别,如下所示:
2、打印变量值,需要在变量名前加$或${},如下所示:
echo $y echo ${y}3、变量名只能为字母、数字或下划线且只能以字母或下划线开头(这一点跟大多数语言一样,至于为什么请问度娘)
4、变量名需要遵循一定的规范,并且要一见名便知其意。
常见的命令规范有三种:
匈牙利命名法
该命令方法是在每个变量名前添加表示数据类型的字符
驼峰命名法
混合使用大小写字母来对变量进行命名。而且是首字母小写,后续单词第一个字母大写,如userName
帕斯卡命名法
与驼峰法很很像,每个单词第一个字母均大写,如UserName
5、环境变量需要全部采用大写形式书写
6、在其他强类开语言中(如Java/C#)对数据类型都有其严格的定义,如整型int、字符char、字符串string、小数float/double/decimal等等。而在Shell中,默认是不区分变量类型的。如果需要显式定义变量类型,则可以使用declare定义。
7、如果要在crond做定时任务时需要在Shell脚本中使用环境变量需要先在执行脚本中重新定义
变量类型变量可分为两类:环境变量(全局变量)和普通变量(局部变量),而环境变量又可以分为bash内置环境变量和用户自定义环境变量。详细可参考下图所示:
环境变量(全局变量):可以在创建它们的Shell和其任意子Shell进程中使用
普通变量(局部变量):仅能在创建它们的Shell函数和脚本中使用
环境变量一般是指使用export内置命令导出的变量,用于定义Shell的运行环境、保证Shell命令的正确执行。Shell通过环境变量来确定登录用户名、命令路径、终端类型、登录目录等,所有的环境变量都是系统全局变量,可用于所有子进程中。
环境变量可以在命令行中设置和创建,但在用户退出命令行时这些变量值就会丢失。如果希望永久保存环境变量,可以在用户目录下的.bashrc或.bash_profile文件中或全局变量配置/etc/profile文件中定义。在将环境变量放入上述文件后,每次用户登录时这些变量都将被初始化。
1、按照系统规范,所有环境变量的名字必须采用大写形式
2、在将环境变量应用于用户进程程序之前,都应该用export命令导出定义。如export JAVA_HOME
3、有部分环境变量,如HOME、PATH、SHELL、UID、USER等,的用户登录之前就已经被/bin/login程序设置好了。通常环境变量被定义并保存在用户目录下的.bash_profile或/etc/profile中。
4、在查看设置的变量时,有3个命令可显示变量的值:set、env、declare
set:输出所有的变量,包括全局变量和局部变量 env:只显示全局变量 declare:输出所有的变量、函数、整数和已经导出的变量 set -o:显示bash Shell的所有参数配置信息env查看系统环境变量:
declare查看所有变量、函数、整数等