Linux笔记(46)——bash变量
、#变量命名规则
变量分类
用户自定义变量
定义变量
变量名=变量值
注意:等号左右两边不能有空格。变量值如果有空格,要用引号引起来,例如:
为什么不能有空格?因为命令是用空格来分隔命令和参数,为了避免混淆,不能用空格
调用变量
在变量名之前加$
注意:
在上图中,预想情况中,z的值应该是3,但是其实变量默认的类型是字符串,所以z=”x+y”和z=“1+2”,而不是z=1+2=3
变量叠加
“$x”等价于${x}
查询变量
set命令,查询所有变量,包括环境变量
-u选项:一旦执行set -u后,如果调用不存在的变量,将会报错
加入我们现在调用一个不存在的变量,会打印空,但不会报错
然后执行set -u后,再调用这个不存在的变量,发现报错了。
删除变量
unset name 删除name这个变量,不需要加$
环境变量
环境变量也可以自定义,但是对系统生效的环境变量是固定的,不能自己随便定义,例如HOSTNAME
环境变量与自定义变量区别
- 环境变量是全局变量,能在当前shell与子shell中生效
- 自定义变量是局部变量,只在当前shell中生效
设置环境变量
export 变量名=变量值
或者
变量名=变量值
export 变量名
查看环境变量
env
常用环境变量
PATH环境变量
path环境变量,保存的是命令的位置,比如我们要输入一个命令,输到一半,可以使用tab键补全,那么系统怎么知道如何补全?系统就是去path中定义的路径下寻找命令并帮我们补全。
要执行命令的时候,系统也是去path定义的路径中找到相应的命令文件去执行
如果我们自己写了一个脚本文件hello.sh,想要执行它有以下几种方式:
前提:首先要赋予执行权限
- 方式1:使用绝对路径:如/root/hello.sh
- 方式2:进入hello.sh所在目录,然后./hello.sh
- 方式3:将hello.sh复制到/bin目录下,然后就可以直接hello.sh执行
- 方式4:将hello.sh所在目录配置到环境变量PATH中,那么也可以直接执行hello.sh($PATH=”$PATH”:/root/sh)
PS1环境变量
PS1环境变量对应的是命令提示符,也就是对应的[root@iZ28ptd9l2rZ ~]#]
对应关系如下:
我们可以修改PS1值
其实还有PS2:
我们输入一个命令,然后后面加上\,系统会帮我们换行,等待继续输入命令。第二行有个>符号,这个符号就是PS2定义的
bash语系变量
locale查询当前语系,zh_CN.utf-8表示中文,en_US表示英文
- LANG定义系统主语系的变量
- LC_ALL定义整体语系的变量
echo $LANG 查看当前语系
locale -a | more 查询linux支持的所有语系
vim /etc/sysconfig/i18n/ 修改默认语系,系统启动时就是读取这个配置文件
中文支持
位置参数变量
例子1
写一个脚本文件
赋予脚本执行权限,然后执行
例子2
写一个脚本
赋予权限,然后执行
例子3:$*与$@的区别
创建脚本
赋予权限,执行,$*只循环一次,$@循环多次
预定义变量
$?
上一条命令执行的情况,0表示正确执行,非0表示错误
非0表示执行错误,从上图可以看到,非0的值可能是2,可能是127,那么这个值到底是多少?这是由写这个错误信息的人决定的
在命令后面加上& 表示把这个命令放入后台执行
接受键盘输入
例子1
脚本
执行
例子2
要求30s内输入完
例子3
适用于输入密码等机密信息
例子4
一输入一个字符,就直接往下执行
还没有评论,来说两句吧...