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) |