张芷铭的个人博客

Bash特殊变量

Bash 脚本中有很多常见的特殊变量,它们可以用于获取脚本执行过程中的各种信息。以下是一些常见的特殊变量及其用途:

1. $0

描述:脚本本身的名称或路径。

示例:$0 会返回脚本的名称或执行时的路径。

2. $1, $2, …, $n

描述:脚本或函数执行时传递给它的位置参数(命令行参数)。

示例:如果你运行 ./script.sh arg1 arg2 arg3,那么 $1 是 arg1,$2 是 arg2,以此类推。

注意:$0 是脚本名,$1 是第一个参数,依此类推。

3. $#

描述:脚本接收到的命令行参数个数。

示例:如果运行 ./script.sh arg1 arg2 arg3,$# 的值是 3。

4. $@

描述:包含所有传递给脚本或函数的参数,以独立的字符串形式返回。

示例:如果运行 ./script.sh arg1 arg2 arg3,$@ 会返回 “arg1” “arg2” “arg3”。

区别:$@ 会将每个参数作为一个独立的单词对待。

5. $*

描述:与 $@ 类似,包含所有传递给脚本的参数,但它将所有参数视为一个整体字符串。

示例:如果运行 ./script.sh arg1 arg2 arg3,$* 会返回 “arg1 arg2 arg3”,即所有参数被合并为一个字符串。

6. $?

描述:返回上一个命令或函数的退出状态码(返回值)。

示例:如果上一个命令成功执行,$? 返回 0;如果失败,返回非零值。

7. $$

描述:当前脚本或进程的进程 ID(PID)。

示例:你可以用 $$ 获取当前 Bash 脚本的进程 ID。

8. $!

描述:返回最后一个后台运行的命令的进程 ID。

示例:如果你运行了一个后台命令,如 sleep 30 &,那么 $! 会返回这个 sleep 命令的进程 ID。

9. $_

描述:在上一个命令中使用的最后一个参数。

示例:假设你运行了 echo hello world,$_ 会返回 world,因为这是最后一个参数。

10. $IFS

描述:内部字段分隔符(Internal Field Separator),用于字段分隔。默认情况下,它包括空格、制表符和换行符。

示例:IFS 可以用来指定如何分割字符串。例如,若设置 IFS=’,’,那么你可以根据逗号分割字符串。

11. $LINENO

描述:当前行号,在脚本中调试时非常有用。

示例:可以用 $LINENO 来输出当前执行脚本时的行号。

12. $RANDOM

描述:返回一个 0 到 32767 之间的随机整数。

示例:echo $RANDOM 可能会输出一个随机数。

13. $EUID

描述:当前用户的有效用户 ID(EUID)。

示例:$EUID 可以用于确定当前脚本是由哪个用户执行的(例如,根用户的 EUID 为 0)。

14. $PATH

描述:包含用于查找可执行文件的目录路径的环境变量。

示例:$PATH 通常包含了多个目录路径,Bash 会依次搜索这些目录来查找可执行文件。

15. $SECONDS

描述:脚本启动后的秒数,返回自脚本开始执行以来的时间(以秒为单位)。

示例:echo $SECONDS 会输出脚本启动后的时间。

16. $UID

描述:当前用户的用户 ID(UID)。

示例:$UID 返回当前执行脚本的用户 ID。

这些特殊变量帮助你在 Bash 脚本中进行各种常见任务,如处理命令行参数、获取程序的退出状态、追踪脚本执行的进程等。

#Linux

💬 评论