变量
变量
bash中的变量主要有三种:用户自定义变量、环境变量和预定义变量。
用户自定义变量
在Bash中,用户自定义变量与其它变量的区别在于其只在当前Bash shell中有效,并且默认是本地变量。以下是与用户自定义变量相关的关键字:
- 变量定义:使用赋值运算符“=”来定义变量。例如,my_var="hello" 将定义一个名为my_var的变量,并将其值设置为hello。
- 变量引用:使用
$
符号来引用变量的值。例如,echo $my_var
将输出my_var变量的值。 - 变量赋值:可以使用赋值运算符“=”来修改变量的值。例如,my_var="world" 将把my_var变量的值修改为world。
- 变量删除:使用
unset
命令来删除变量。例如,unset my_var 将删除名为my_var的变量。 - 变量类型:Bash中的变量默认都是字符串类型,但是可以通过类型转换函数将其转换为其他类型。例如,使用
declare
命令可以定义整数变量,使用declare -a
命令可以定义数组变量等。 - 变量作用域:用户自定义变量默认都是本地变量,只在当前Bash shell中有效。如果想让变量在当前Bash shell及其所有子进程中都有效,可以使用
export
命令将其导出为环境变量。
需要注意的是,Bash中还有一些特殊变量,如$0、$1、$2
等,它们用于保存脚本的名称和参数等信息,不同于用户自定义变量。
环境变量
Bash中的环境变量是可以被整个操作系统和所有进程访问的变量。
Bash中预定义了很多环境变量,以下是一些常见的环境变量:
- PATH:用于指定Shell查找可执行文件的路径列表。
- HOME:指定当前用户的主目录路径。
- USER:指定当前用户的用户名。
- LOGNAME:指定当前用户的登录名。
- SHELL:指定当前Shell的路径。
- PS1:用于控制Shell命令提示符的显示方式。
- LANG:指定系统的默认语言。
- LC_ALL:用于覆盖LANG环境变量,指定系统的默认语言和区域设置。
- PWD:指定当前工作目录的路径。
- TERM:指定当前终端的类型。
- DISPLAY:指定X服务器的显示地址。
- EDITOR:指定系统默认的文本编辑器。
- HOSTNAME:指定当前主机的名称。
- HISTSIZE:指定Shell保存历史命令记录的最大条数。
可以使用printenv命令列出所有的环境变量。例如,以下命令将列出所有的环境变量:
printenv
可以使用echo命令来查看特定环境变量的值。例如,以下命令将输出PATH环境变量的值:
echo $PATH
预定义变量
Bash中有许多预定义变量,它们存储着一些特殊的值,用于方便Shell脚本的编写和运行。以下是一些常见的预定义变量:
$0
:代表当前脚本的文件名。$1、$2、$3...
:代表脚本的参数,$1
表示第一个参数,$2
表示第二个参数,以此类推。$#
:代表脚本参数的数量。$@
:代表所有的脚本参数,每个参数用空格分隔开。$?
:代表上一个命令的退出状态码,0表示成功执行,其他值表示执行失败。$$
:代表当前进程的进程ID。$USER
:代表当前用户的用户名。$HOME
:代表当前用户的主目录路径。$PWD
:代表当前工作目录的路径。$SHELL
:代表当前Shell的路径。$IFS
:代表Shell的内部字段分隔符,通常是空格、制表符和换行符。
这些预定义变量在Shell脚本中非常有用,可以通过引用它们的值来帮助脚本执行特定的操作。例如,可以使用$0
来获取脚本的名称,使用$1
来获取用户传递的第一个参数,使用$?
来判断上一个命令是否执行成功等。
需要注意的是,这些变量的值通常是只读的,不能被修改。如果要修改这些变量的值,可以使用特殊的Shell命令和语法。例如,可以使用shift命令来移动脚本参数的位置,从而修改$1、$2等参数变量的值。