Bash变量命名规则

必须以字母下划线开头,只能由字母下划线数字组成。

长度不能超过255个字符

变量名在有效的范围内必须唯一

在Bash中,变量的默认类型都是字符串


一 用户自定义变量

用户自定义的变量。局部变量,只在当前shell有效。

格式:变量名=变量值

例如:x=5 # 等号两边不能有空格

           y='hello world' # 如果变量值中有空格须用引号引起来。

调用:echo $x  

变量叠加:

x=1

x="$x"23   或  x=${x}23

echo $x  # 输出123

变量查看:

set

删除变量:

unset 变量名  # 不加$


二 环境变量

全局变量,在当前shell中和当前shell的子shell,子shell的子shell......中都有效

保存的是和系统操作环境相关的数据。变量可以自定义,但是对系统生效的环境变量名和变量作用是固定的。

1、自定义一个环境变量:

export 变量名=变量值    或  

变量名=变量值

export 变量名

查看环境变量:

env   或  set

删除环境变量:

unset 变量名  # 需要在变量声明的shell中才可以删除 在子shell中无法删除

2、对系统起作用的环境变量:

 2.1 $PATH  # 系统搜寻可执行文件的路径

临时修改PATH: PATH="$PATH":/home/sh

永久修改须改配置文件。

 2.2 PS1变量:

\d  #显示日期,格式为“星期 月 日”

\H #显示完整的主机名。如默认主机名 “localhost.localdomain”

\t  #显示24小时制时间,格式为 HH:MM:SS

\A #显示24小时制时间,格式为 HH:MM

\u #显示当前用户名

\w #显示当前所在目录的完整名称

\W #显示当前所在目录的最后一个目录

\$ #提示符。如果是root会显示提示符# 普通用户为$

用来修改提示符

PS1='[\u@\h \W]\$'   # 按需求从上述格式中取值

3、语系变量

locale    # 查询当前系统语系

LANG : 定义系统主语系

LC_ALL : 定义整体语系的变量


三 位置参数变量

主要用来向脚本中传递参数或数据。变量名不能自定义,变量作用是固定的


位置参数变量

作用

$n

n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}

$*

这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体

$@

这个变量代表命令行中所有的参数,不过$@把每个参数区分对待

$#

这个参数代表命令行中所有参数的个数


四 预定义变量

是Bash中已经定义好的变量,变量名不能自定义,变量的作用也是固定的。


预定义变量

作用

$?

最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数由命令自己决定),则证明上一个命令执行不正确了。

$$

当前进程的进程号(PID)

$!

后台运行的最后一个进程的进程号(PID)