bash变量
变量 :一段有名称的连续的内存空间,这段内存空间的名称,称为变量名;在这段内存空间中存储的数 据,则称为变量值 变量的赋值:向变量内存空间存放数据的操作,通常用“=”赋值 变量的类型:整型,字符型...(同样的数据用不同的类型表示所占内存空间不一样) 整型:用二进制来表示数字数据(一字节由8bite组成) 字符型:ASCLL码(一个数据由一个ASCLL码表示,一个ASCLL码占一个字节) 字符型:UTF-8: 变量的赋值方法:VARNAME=VALUE 变量: 强变量:使用之前必须事先予以声明;必须声明变量类型 如在C++中 intx stringy x=12 y="12" x是整型变量,y是字符串变量 bash中变量名称的命名规范: 1.变量名只能一“_”或“字母”为起始字符,后面其他字符可以是任意字母,数字,"_" [root@localhost~]#aa='123' [root@localhost~]#echo$aa 123 [root@localhost~]#1ace='321' bash:1ace=321:未找到命令... 注意:引用变量需要在变量前加$符号 3.命名的书写格式: 全大写 全小写 驼峰式:(一般单词首字母大写) 连接式:(各词组用'_'连接) 4.变量名要能做到见名之意; 5.变量名不能与已知变量或bash的内置变量重复 bash中的变量的分类: 全局变量(环境变量):作用于整个shell进程,包括其子shell 本地变量:作用范围为当前登录时所打开的shell进程,不包括其子shell 局部变量:作用范围仅仅只是当前程序段,一般用于函数 根据变量的声明方式分类: bash内置变量 普通的内置变量:HISTSIZE…… 位置参数变量:$0,$1,$2,...... 特殊变量:$?,$#,$*,$@,$$....... 自定义变量: 1.自定义变量的声明和赋值操作: 1):声明全局变量: export VARNAME export VARNAME=VALUE
declare命令 格式:declare [-aAfFgilrtux] [-p] [name[=value] ...] 常用选项: -a:声明索引数组(如果支持) -A:声明关联数组 -i:声明整型变量 -l:声明变量并将变量中的字母转换为小写字母 -u:声明变量并将变量中的字母转换为大写字母 -r:声明只读变量;该变量技能一次赋值操作 -x:声明全局变量 declare -x VARNAME[=VALUE]、 注意:选项-l,-u,改变的是变量值而不是变量名 [root@localhost~]#declare-uaAbC='abcdefg' [root@localhost~]#echo$aAbC ABCDEFG [root@localhost~]#declare-xabv='454' [root@localhost~]#echo$abv 454 [root@localhost~]#unsetabv [root@localhost~]#echo$abv [root@localhost~]#declare-raAbC [root@localhost~]#unsetaAbC -bash:unset:aAbC:无法反设定:只读variable 注意:利用unset可以撤销变量名和变量值,但当变量被声明为只读变量时无法修改,所以使用unset无法删除. VARNAME=VALUE
3):声明局部变量 local VARNEME[=VALUE] 注意:局部变量只能在函数中使用 注意:本地变量变为全局变量,可以通过export [本地变量名] 或declare -x [本地变量名] [root@localhost~]#addd='123123' [root@localhost~]#exportaddd [root@localhost~]#sh sh-4.2#echo$addd 123123 sh-4.2#exit exit [root@localhost~]#unsetaddd [root@localhost~]#addd='45678' [root@localhost~]#declare-xaddd [root@localhost~]#sh sh-4.2#echo$addd 45678 sh-4.2#
2.查看环境变量 set命令: 查看和改变shell属性的值和查看shell变量的变量名和变量值 export命令: 查看变量名称,也可以为变量赋值 env命令:类似set(显示环境变量而不显示函数) 3.查看变量的值 echo ${VARNAME}
4.撤销变量的赋值及变量声明 unset VARNAME 首先我们创建全局变量aaa,和局部变量bbb,并在当前shell输出 [root@localhost~]#exportaaa [root@localhost~]#exportaaa='12345' [root@localhost~]#bbb='54321' [root@localhost~]#echo$aaa 12345 [root@localhost~]#echo$bbb 54321 然后我们查看当前shell并切换其他shell [root@localhost~]#$0 bash: [root@localhost~]#sh sh-4.2#echo$aaa 12345 sh-4.2#echo$bbb sh-4.2# 可以看到全局变量可以作用于其子shell但本地变量不行。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |