$$ shell本身的PID(ProcessID) $! shell最后运行的后台Process的PID $? 最后运行结束的命令的返回状态值,为0则为执行成功,为1则为执行失败 $* 所有参数列表.以”$1 $2 … $n”的形式输出所有参数 $@ 所有参数列表.以”$1″ “2”…”2″ … “2”…”n”的形式输出所有参数 $# 添加到shell的命令行参数个数 $0 脚本本身的文件名 $1 ~ $n 添加到脚本的各个参数值,$1是第一个参数,$2是第二个参数… 给出一个例子辅助理解 #创建一个脚本测试文件 [root@localhost ~]# vim test.sh echo nu 在Shell脚本编程中,环境变量扮演着至关重要的角色,它们提供了与系统交互以及控制脚本行为的方法。这里我们将详细探讨在标题和描述中提到的几个特定的环境变量:`$0`, `$?`, `$!`, `$$`, `$*`, `$#`, 和 `$@`。 1. **`$0`**: `$0` 是一个特殊的环境变量,它表示当前执行的Shell脚本的文件名。在脚本内部,`$0` 用于引用调用该脚本时的文件路径。例如,在上述的`test.sh`脚本中,`echo "scname:$0"`会输出脚本的名称,即`./test.sh`。 2. **`$?`**: `$?` 保存了上一个命令的退出状态或返回值。在Unix/Linux系统中,0通常代表成功,非0值则表示错误。如果你需要检查一个命令是否成功执行,可以检查`$?`的值。例如,如果一个命令执行成功,`echo $?`将输出0。 3. **`$$`**: `$$` 表示当前Shell进程的进程ID(PID)。当你需要在脚本中跟踪或控制子进程时,这个变量非常有用。例如,如果你启动了一个后台进程,你可以保存`$$`的值以供后续操作。 4. **`$!`**: `$!` 存储的是最后一个后台命令的进程ID。如果你的脚本中包含异步执行的命令,你可以通过`$!`获取它的PID,以便进行后续的管理和监控。 5. **`$*`** 和 **`$@`**: 这两个变量都用来表示传递给脚本的所有参数,但它们的处理方式有所不同。 - `$*` 将所有参数作为一个单个字符串显示,每个参数之间由空格分隔,如`"arg1 arg2 arg3"`。 - `$@` 则是将每个参数作为单独的字符串显示,每个参数都被双引号包围,如`"arg1" "arg2" "arg3"`。在实际使用中,通常推荐使用`$@`,因为它能更好地处理包含空格的参数。 6. **`$#`**: `$#` 返回传递给脚本的参数个数。在`test.sh`脚本中,`echo "number:$#"`将输出参数的数量,例如在执行`./test.sh aa bb`时,输出将是`2`,因为有两个参数传递给脚本。 了解这些环境变量后,我们可以编写更复杂的脚本来处理参数、检查命令执行状态、管理进程等。在编写Shell脚本时,熟练掌握这些变量能帮助我们编写出更加健壮和灵活的程序。在实际应用中,你可能会结合使用这些变量来实现各种功能,比如错误处理、日志记录、条件判断等。因此,熟悉并正确使用这些环境变量是Shell脚本编程的基础。
- 粉丝: 4
- 资源: 944
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot和Vue的后台管理系统.zip
- 用于将 Power BI 嵌入到您的应用中的 JavaScript 库 查看文档网站和 Wiki 了解更多信息 .zip
- (源码)基于Arduino、Python和Web技术的太阳能监控数据管理系统.zip
- (源码)基于Arduino的CAN总线传感器与执行器通信系统.zip
- (源码)基于C++的智能电力系统通信协议实现.zip
- 用于 Java 的 JSON-RPC.zip
- 用 JavaScript 重新实现计算机科学.zip
- (源码)基于PythonOpenCVYOLOv5DeepSort的猕猴桃自动计数系统.zip
- 用 JavaScript 编写的贪吃蛇游戏 .zip
- (源码)基于ASP.NET Core的美术课程管理系统.zip