Linux笔记(46)——bash变量

谁借莪1个温暖的怀抱¢ 2022-08-21 04:44 176阅读 0赞

、#变量命名规则
这里写图片描述

变量分类

这里写图片描述

用户自定义变量

定义变量

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

这里写图片描述

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

调用变量

在变量名之前加$
这里写图片描述

注意:
这里写图片描述

在上图中,预想情况中,z的值应该是3,但是其实变量默认的类型是字符串,所以z=”x+y”和z=“1+2”,而不是z=1+2=3

变量叠加

这里写图片描述

“$x”等价于${x}

查询变量

set命令,查询所有变量,包括环境变量

-u选项:一旦执行set -u后,如果调用不存在的变量,将会报错

加入我们现在调用一个不存在的变量,会打印空,但不会报错

然后执行set -u后,再调用这个不存在的变量,发现报错了。

这里写图片描述

删除变量

unset name 删除name这个变量,不需要加$

环境变量

环境变量也可以自定义,但是对系统生效的环境变量是固定的,不能自己随便定义,例如HOSTNAME
这里写图片描述

环境变量与自定义变量区别

  1. 环境变量是全局变量,能在当前shell与子shell中生效
  2. 自定义变量是局部变量,只在当前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表示英文
这里写图片描述

  1. LANG定义系统主语系的变量
  2. 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

一输入一个字符,就直接往下执行
这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,176人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Linux Bash Shell 学习笔记

    1、bash脚本的参数处理 BASH的参数可以用$加数字编号来访问,其中: $\代表脚本的参数个数 $1代表脚本的第1个参数 $2代表脚本的第2个参数 以此类推,$