bash变量特性
变量和常量在以前学C的时候就知道,所谓变量就是可以变化的量,就如数学中的x,而常量就是就是不变的量,比如常数,1,2,3.....等等
但是在bash不大一样:我们有一些定义;
变量:一段有名称的连续的内存空间;这段内存空间的名称,称为变量名;在这段内存空间中存储的数据,则称为变量值;
因为数据要想在内存中,必须以一些二进制的值存在,我们叫做存在值。不论是什么,都是一些数值而已。
给内存空间(变量)中存储数据的过程,称为赋值操作;赋值符号通常为“=”这个操作的话,在很多语言中都有有涉及,有点语言基础都会知道。
变量的类型:
变量:(这一点PHP和bash就很像)
强变量:使用之前必须事先予以声明:必须声明变量类型;
弱变量:使用之前无需声明,无需指明变量类型;(bash变量)
变量的赋值方法:
VARNAME=VALUE
其解释为,将某数值(VALUE)通过赋值操作(=)存储于特定的内存空间中(VARNAME);
bash中变量名称的命名规范:
1.变量名只能以"_"或"字母"为起始字符,后面的其他字符可以是任意字母,数字,下划线;
2.变量名中字母是大小写敏感的;
3.命名的书写格式:
全大写:HISTSIZE
全小写:myvar
驼峰式: MyNewVariable
连接式:My_New_Var
4.变量名要能做到见名知意(很重要,毕竟作为程序员,要换位思考别人理解自己的程序)
5.变量名不能与一直变量或bash的内置变量重复;(一旦重复,则凡事依赖此变量的程序都会受到影响)
bash中变量有哪些种类;
根据变量的作用范围:
全局变量(环境变量):作用范围为整个shell进程,包括其子shell;
本地变量:作用范围为当前登录时大所打开的shell进程,不包括其子shell;
局部变量(local):作用范围仅仅只是当前程序段,一般用于函数;
根据变量的声明方式划分:
bash内置变量:
普通的内置变量:HISTSIZE,...
位置参数变量:$0,$1,$2,...[(touch a b c d )touch为$0,依次又空格往后推]
特殊变量:$?,$#,$*,$@,$$,..(等我理解了,我会在写出来)
自定义变量:
变量的使用:
1.变量的声明和赋值:(自定义)变量
1)声明全局变量(环境变量)
export VARNAME
export VARNAME=VALUE
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]
下边是一个例子:很简单的一个例子
[root@localhosttest]#exportMYVAR='testinfo' [root@localhosttest]#echo$MYVAR testinfo [root@localhosttest]#csh [root@localhosttest]#echo$0 csh [root@localhosttest]#echo$MYVAR testinfo [root@localhosttest]#VAR='bashvar' [root@localhosttest]#echo$VAR bashvar [root@localhosttest]#csh [root@localhosttest]#echo$0 csh [root@localhosttest]#echo$VAR VAR:Undefinedvariable. [root@localhosttest]#exit exit [root@localhosttest]#exportVAR [root@localhosttest]#csh [root@localhosttest]#echo$0 csh [root@localhosttest]#echo$VAR bashvar
2.查看环境变量: set命令: 可以查看和改变shell属性的值及查看shell变量的变量名和变量值 export: 查看变量名称,也可以为变量赋值; env命令:0 3.查看变量的值: echo ${VARNAME} 4.撤销变量的赋值及变量声明 unset VARNAME 有关于保存变量的shell配置文件: 通用配置文件: /etc/bashrc /etc/profile /etc/profilr.d/* 私人配置文件: ~/.bashrc ~/.bash_profile 注意: 1.一般情况下,变量都是随意随声明,除非有必要,否则不建议修改配置文件的内容; 2.声明的变量在使用完之后,最好使用unset命令予以撤销;