1219

6 分钟

#Bash 的变量

Bash 中的变量定义语法如下:

变量名=值

注意,等号(=)两边不能有空格。

变量名的命名应当遵循如下规则:

  • 只能包含字母数字下划线(_,并且不能以数字开头。
  • 不能使用 Bash 保留的关键字,如:if then else fi for while do done
  • 环境变量和常量使用全大写字母,单词间使用下划线分隔
  • 普通变量使用全小写字母,单词间使用下划线分隔
  • 函数内的局部变量使用 local 关键字声明

例如:

PI=3.1415925 URL="https://xplanc.org/"

#读取变量

在 Bash 中通过美元符号($)将变量名解析为值。格式为:

$变量名 # 或 ${变量名}

例如:

>>> PI=3.1415925 >>> echo PI PI >>> echo $PI 3.1415925

#删除变量

使用 unset 命令可以删除变量。格式为为:

unset 变量名

#运算

在 Bash 中进行运算需要使用 $(( 表达式 ))。例如:

>>> echo $(( 1 + 1 )) 2 >>> a=10 >>> b=3 >>> echo $(( $a / $b )) 3
  • 注意,仅支持整数运算

#环境变量

Bash 在运行可执行文件时,会创建一个新的进程并重置全部的环境。因此该程序无法读取到之前 Bash 上创建的变量。

如果需要一个变量可以被可执行文件读取,则需要使用 export 命令创建环境变量。格式为:

export 变量名=值

可以通过 env 命令查看当前存在的全部环境变量:

$ env SHELL=/bin/bash NVM_RC_VERSION= PWD=/home/planc LOGNAME=planc XDG_SESSION_TYPE=tty HOME=/home/planc LANG=en_US.UTF-8 ...

#特殊变量

Bash 中预设了一批特殊变量,这些变量只能读取,不能被赋值。

  • $? - 一个命令的退出码,通常使用 0 表示成功,非 0 表示失败
  • $$ - 当前 Shell 的 ID
  • $0 - 当前命令,直接读取时是 Bash 自身,在脚本中读取时是脚本文件
  • $1 - 当前命令的第一个参数,$2$3 以此类推
  • $# - 当前命令的参数数量
  • $@ - 当前命令的全部参数

创建于 2025/9/7

更新于 2025/9/7