您的位置:首页 > 运维架构 > Shell

Linux笔记(46)——bash变量

2016-03-15 22:01 411 查看
、#变量命名规则



变量分类



用户自定义变量

定义变量

变量名=变量值

注意:等号左右两边不能有空格。变量值如果有空格,要用引号引起来,例如:



为什么不能有空格?因为命令是用空格来分隔命令和参数,为了避免混淆,不能用空格

调用变量

在变量名之前加$



注意:



在上图中,预想情况中,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. 方式1:使用绝对路径:如/root/hello.sh

2. 方式2:进入hello.sh所在目录,然后./hello.sh

3. 方式3:将hello.sh复制到/bin目录下,然后就可以直接hello.sh执行

4. 方式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

一输入一个字符,就直接往下执行

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux bash