shell编程学习笔记2--自定义变量,系统变量,语系变量,位置参数变量,预定义变量$?...

总结:

定义变量:

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中无效)

注意:退出子shellexit。是否退出成功用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[email protected]相当于是正常循环)

注意:$*[email protected]要用双引括起来

预定义变量: