总结:
定义变量:
1、变量中的=俩边不能有空格
2、变量值中有空格就加引号(具体用什么引号,需要参考shell中的特殊符号,因为引号就是特殊符号)
调用变量:
1、输出调用时,一定记得加$。如echo $x
变量叠加(类似于重新赋值是追加,而不是覆盖):
1、除非赋值是''(空字符串可以清空变量的值)
2、需要将被调用的变量拿双引括起来,单引不能解析
删除变量:
1、变量名前不要加$,$是调用
环境变量与用户自定义变量的区别:
1、环境变量是全局的
2、用户自定义变量是局部的(当前shell生效,子shell中无效)
bash变量与变量分类
在bash中,变量默认的类型,都是字符串
1、用户自定义变量:自己定义的普通变量
2、环境变量:这种变量中主要保存的是和系统操作环境相关的数据,环境变量也可以自定义(一般是给脚本传值),但是对系统生效的环境变量名和变量作用是固定的(但变量的值可以改变)
总结:环境变量分2种,一种是系统的,一种是自定义的
3、位置参数变量(是预定义变量中的一种):这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
4、预定义变量:是bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
总结:
预定义变量最严格,只能改不能新增;
环境变量较严格,能改值和新增;
自定义变量最松散,就是普通编程语言的变量,只是bash中的类型是字符串
变量调用:
语法:$变量名
变量叠加:
语法:x="$x"456 或 x=${x}789
注意:重新赋值时需要调用变量名(看$),被调用的变量名要拿双引或{}括起来
重新赋值是在后面追加,而不是覆盖
变量查看:
语法:set [选项] #查询系统下所有已经生效的变量,包括默认的环境变量、自定义变量
-u #调用未声明的变量时会报错(默认无任何提示)
注意:Set中除了我们自己定义的,剩下的都是系统默认已经存在的环境变量
变量删除:
语法:unset 变量名
用户自定义变量:
语法:变量名=变量值
注意:变量的值有空格,必须加引号(至于加双引还是加单引,需要参考其他特殊符号)
环境变量
环境变量与用户自定义变量的区别:
1、环境变量是全局的
2、用户自定义变量是局部的(当前shell生效,子shell中无效)
注意:退出子shell用exit。是否退出成功用pstree看看
环境变量的特点:对系统生效的环境变量名和变量作用是固定的
环境变量也分2种:1、用户自定义的 2、系统的
设置用户自定义的环境变量(比普通自定义的多个export):
语法:export 变量名=变量值
或(也可以先定义变量,在声明)
变量名=变量值
export 变量名
注意:调用环境变量也是echo $变量名
删除也是unset 变量名(系统的环境变量无法删除)
子shell中不能删除父shell定义的
查看环境变量:
> set #查看所有变量
> env #查看环境变量
常用的系统环境变量:
LS_COLORS当前操作环境的颜色
MAIL 邮箱地址
PWD 当前所在目录
LANG 语言环境
PATH 系统搜索命令的路径
注意:环境变量名写大写,因为他会对所有的子shell生效,方便区分
PATH环境变量:
PATH变量 #系统查找命令的路径
echo $PATH #查看PATH环境变量
PATH="$PATH":/root/sh #增加PATH的值(这就是修改,此修改是追加,不是覆盖)
建议用变量值的叠加(自己找个地方建个目录,专门放这些文件,然后将路径添加到PATH变量中)除非改文件,否则是临时的,重启后就没有了
ps1环境变量:
bash语言变量
> locale #查询当前系统语系
-LANG:定义系统主语系的变量
-LC_ALL:定义整体语系的变量
> echo $LANG #查看系统当前语系
> locale -a | more #查看linux支持的所有语系
> cat -n /etc/sysconfig/i18n #查询系统默认语系
位置参数变量(给脚本传参用的):
例子1:执行方式 ./.sh文件 参数1 参数2
把in后面的数,依次赋值给i($@相当于是正常循环)
注意:$*和$@要用双引括起来