** bash变量** 变量:一段有名称的连续的内存空间;这段内存空间的名称,称为变量名;在这段内存空间中存储的数据,则称为变量值;

程序 = 指令 + 数据

数据:文件,存在值;

向内存空间(变量)中存储数据的过程,称为赋值操作;赋值符号通常为"=";

变量的类型:
	123 -- 整型:01111011
			-- 字符型:ASCII:3字节
			-- 字符型:UTF-8:9字节

变量:
	强变量:使用之前必须事先予以声明;必须声明变量类型;
	弱变量:在使用之前无需声明,无需指明变量类型;(bash变量)

变量的赋值方法:
	VARNAME=VALUE

	其含义:将某数值(VALUE)通过赋值操作(=)存储于特定的内存空间中(VARNAME);

	bash中变量名称的命名规范:
		1.变量名只能以"_"或"字母"为起始字符,后面的其他字符可以是任意字母,数字或下划线;
		2.变量名中的字母是大小写敏感的;
		3.命名的书写格式:
			全大写:HISTSIZE
			全小写:myvar
			驼峰式:MyNewVariable
			连接式:My_New_Var
		4.变量名要能做到见名知意;
		5.变量名不能与已知变量或bash的内置变量重复;

bash中的变量的分类:
	根据变量的作用范围来划分:
		全局变量(环境变量):作用范围为整个shell进程,包括其子shell;
		本地变量:作用范围为当前登录时打开的shell进程,不包括其子shell;
		局部变量:作用范围仅仅只是当前程序段,一般用于函数;

	根据变量的声明方式来划分:
		bash内置变量:
			普通的内置变量:HISTSIZE,...
			位置参数变量:$0, $1, $2, ...
			特殊变量:$?, $#, $*, $@, $$, ...
				$?:展开为最近一次执行的命令的状态返回值(退出状态码);用以表示最近一次执行的命令是否成功执行;
				$#:不包括$0在内的其余的位置参数的个数,以十进制数字表示;
				$*:从$1开始展开为位置参数。当使用双引号引用展开的结果时,它展开为特殊变量IFS的第一个字符分隔的值;
				$@:从$1开始展开为位置参数。当使用双引号引用展开的结果时,它展开为一个单独的字符串;
				$$:展开为当前shell的进程标识符;
		自定义变量:

	变量的使用:
		1.变量的声明和赋值:
			1) 声明全局变量(环境变量):
				export VARNAME
				export VARNAME=VALUE

				declare命令:
					declare - Set variable values and attributes.
					格式:declare [-aAfFgilrtux] [-p] [name[=value] ...]
						常用的选项:
							-a:声明索引数组(如果支持)
							-A:声明关联数组(如果支持)
							-i:声明整型变量
							-l:声明变量并将变量值中的字母转换为小写字母;
							-u:声明变量并将变量值中的字母转换为大写字母;
							-r:声明只读变量;该变量仅能进行一次赋值操作;
							-x:声明变量并将其导出为全局变量;

				declare -x VARNAME[=VALUE]

			2) 声明本地变量:
				VARNAME=VALUE

			3) 声明局部变量:
				local VARNAME[=VALUE]

		2.查看环境变量:
			set命令:
				查看和改变shell属性的值及查看shell变量的变量名和变量值;

			export命令:
				查看变量名称,也可以为变量赋值;

			env命令:

		3.查看变量的值:
			echo ${VARNAME}

		4.撤销变量的赋值及变量声明
			unset VARNAME

有关于保存变量的shell配置文件:
	通用配置文件:
		/etc/bashrc
		/etc/profile
		/etc/profile.d/*

	私人配置文件:
		~/.bashrc
		~/.bash_profile

注意:
	1.一般情况下,变量都是随用随声明,除非有必要,否则不建议修改配置文件的内容;
	2.声明的变量在使用完以后,最好使用unset命令予以撤销;