shell 各种内置变量

部署运行你感兴趣的模型镜像
$0: shell或shell脚本的名字
$*:以一对双引号给出参数列表
$@:将各个参数分别加双引号返回
$#:参数的个数
$_:代表上一个命令的最后一个参数
$$:代表所在命令的PID
$!:代表最后执行的后台命令的PID
$?:代表上一个命令执行后的退出状态

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### 关于 Shell 脚本中的内置变量Shell 脚本编程中,内置变量是一些由 Shell 自动定义并维护的特殊变量。这些变量通常用于获取有关脚本运行状态的信息或者控制脚本的行为。以下是常见的内置变量及其用途: #### 1. `$0` 表示当前正在执行的脚本文件名。它可以帮助我们了解脚本是如何被调用的。例如,在以下场景中可以使用: ```bash #!/bin/bash echo "The script name is: $0" ``` 如果运行 `./example.sh`,则会输出 `The script name is: ./example.sh`[^3]。 --- #### 2. `$n` (其中 n 是正整数) 这是位置参数变量,用于访问传递给脚本的命令行参数。具体来说: - `$1`, `$2`, ..., `$9` 表示第一个到第九个命令行参数。 - 如果超过九个参数,则需要用大括号 `{}` 来引用,比如 `${10}`, `${11}` 等。 下面是一个简单的例子: ```bash #!/bin/bash echo "First argument: $1" echo "Second argument: $2" echo "Third argument: ${10}" # 使用大括号来引用第十个参数 ``` 假设运行如下命令: ```bash ./script.sh hello world this is a test example of positional parameters ten eleven ``` 输出将是: ``` First argument: hello Second argument: world Third argument: ten ``` [^2] --- #### 3. `$#` 表示传入脚本的参数总数。这有助于动态处理不同数量的参数。例如: ```bash #!/bin/bash if [ $# -eq 0 ]; then echo "No arguments supplied." else echo "Number of arguments passed: $#" fi ``` 当运行 `./count_args.sh one two three` 时,输出为 `Number of arguments passed: 3`[^2]。 --- #### 4. `$@` 和 `$*` 这两个变量都用于遍历所有的命令行参数,但在某些情况下行为略有差异: - **`$@`**: 将每个参数视为单独的一个字符串(即使参数中有空格)。 - **`$*`**: 将所有参数作为一个整体字符串对待。 示例代码展示两者的区别: ```bash #!/bin/bash echo "Using \$*: '$*' " echo "Using \$@: '$@' " for arg in "$@"; do echo "- Argument: $arg" done ``` 假如运行 `./args_test.sh first "second part" third`,输出可能如下: ``` Using $*: 'first second part third' Using $@: 'first' 'second part' 'third' - Argument: first - Argument: second part - Argument: third ``` --- #### 5. `$?` 存储最近一个命令或函数退出的状态码。正常结束返回值通常是 `0`,而非零值一般表示错误发生。例如: ```bash #!/bin/bash ls /nonexistent_directory exit_status=$? if [ $exit_status -ne 0 ]; then echo "Command failed with exit code: $exit_status" fi ``` 如果目录 `/nonexistent_directory` 不存在,将会打印类似这样的消息: ``` Command failed with exit code: 2 ``` [^3] --- #### 6. `$$` 保存当前进程 ID(PID),这对于调试或多线程应用非常有用。例如: ```bash #!/bin/bash echo "Process ID of the current shell: $$" sleep 5 & child_pid=$! wait $child_pid echo "Child process ($child_pid) has finished." ``` 此脚本先显示父进程 PID,接着启动子进程等待其完成后再继续[^3]。 --- #### 7. `$!` 记录最后后台进程中创建的新进程编号。可用于监控后台作业情况。例如: ```bash #!/bin/bash nohup sleep 100 & bg_job_id=$! echo "Background job started, its PID is: $!" kill -0 $bg_job_id && echo "Job still running." || echo "Job terminated." ``` 这里展示了如何跟踪以及检查某个后台任务是否仍然存活。 --- ### 总结 以上列举了一些常用的 Shell 内置变量及其典型应用场景。合理运用这些工具可以让我们的脚本更加强大且易于管理。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值