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
💬 评论