螺竹编程
发布于 2024-08-04 / 1 阅读
0

Shell/Bash: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命令来移动脚本参数的位置,从而修改2等参数变量的值。