跳至主要內容

变量


变量

bash中的变量主要有三种:用户自定义变量、环境变量和预定义变量。

用户自定义变量

在Bash中,用户自定义变量与其它变量的区别在于其只在当前Bash shell中有效,并且默认是本地变量。以下是与用户自定义变量相关的关键字:

  1. 变量定义:使用赋值运算符“=”来定义变量。例如,my_var="hello" 将定义一个名为my_var的变量,并将其值设置为hello。
  2. 变量引用:使用$符号来引用变量的值。例如,echo $my_var 将输出my_var变量的值。
  3. 变量赋值:可以使用赋值运算符“=”来修改变量的值。例如,my_var="world" 将把my_var变量的值修改为world。
  4. 变量删除:使用unset命令来删除变量。例如,unset my_var 将删除名为my_var的变量。
  5. 变量类型:Bash中的变量默认都是字符串类型,但是可以通过类型转换函数将其转换为其他类型。例如,使用declare命令可以定义整数变量,使用declare -a命令可以定义数组变量等。
  6. 变量作用域:用户自定义变量默认都是本地变量,只在当前Bash shell中有效。如果想让变量在当前Bash shell及其所有子进程中都有效,可以使用export命令将其导出为环境变量。

需要注意的是,Bash中还有一些特殊变量,如$0、$1、$2等,它们用于保存脚本的名称和参数等信息,不同于用户自定义变量。

环境变量

Bash中的环境变量是可以被整个操作系统和所有进程访问的变量。

Bash中预定义了很多环境变量,以下是一些常见的环境变量:

  1. PATH:用于指定Shell查找可执行文件的路径列表。
  2. HOME:指定当前用户的主目录路径。
  3. USER:指定当前用户的用户名。
  4. LOGNAME:指定当前用户的登录名。
  5. SHELL:指定当前Shell的路径。
  6. PS1:用于控制Shell命令提示符的显示方式。
  7. LANG:指定系统的默认语言。
  8. LC_ALL:用于覆盖LANG环境变量,指定系统的默认语言和区域设置。
  9. PWD:指定当前工作目录的路径。
  10. TERM:指定当前终端的类型。
  11. DISPLAY:指定X服务器的显示地址。
  12. EDITOR:指定系统默认的文本编辑器。
  13. HOSTNAME:指定当前主机的名称。
  14. HISTSIZE:指定Shell保存历史命令记录的最大条数。

可以使用printenv命令列出所有的环境变量。例如,以下命令将列出所有的环境变量:

printenv

可以使用echo命令来查看特定环境变量的值。例如,以下命令将输出PATH环境变量的值:

echo $PATH

预定义变量

Bash中有许多预定义变量,它们存储着一些特殊的值,用于方便Shell脚本的编写和运行。以下是一些常见的预定义变量:

  1. $0:代表当前脚本的文件名。
  2. $1、$2、$3...:代表脚本的参数,$1表示第一个参数,$2表示第二个参数,以此类推。
  3. $#:代表脚本参数的数量。
  4. $@:代表所有的脚本参数,每个参数用空格分隔开。
  5. $?:代表上一个命令的退出状态码,0表示成功执行,其他值表示执行失败。
  6. $$:代表当前进程的进程ID。
  7. $USER:代表当前用户的用户名。
  8. $HOME:代表当前用户的主目录路径。
  9. $PWD:代表当前工作目录的路径。
  10. $SHELL:代表当前Shell的路径。
  11. $IFS:代表Shell的内部字段分隔符,通常是空格、制表符和换行符。

这些预定义变量在Shell脚本中非常有用,可以通过引用它们的值来帮助脚本执行特定的操作。例如,可以使用$0来获取脚本的名称,使用$1来获取用户传递的第一个参数,使用$?来判断上一个命令是否执行成功等。

需要注意的是,这些变量的值通常是只读的,不能被修改。如果要修改这些变量的值,可以使用特殊的Shell命令和语法。例如,可以使用shift命令来移动脚本参数的位置,从而修改$1、$2等参数变量的值。

上次编辑于:
贡献者: Neil