前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >起底Linux系统shell中那些特殊变量

起底Linux系统shell中那些特殊变量

作者头像
用户5921339
发布于 2025-05-20 09:25:23
发布于 2025-05-20 09:25:23
11200
代码可运行
举报
运行总次数:0
代码可运行

在Shell脚本中,$符号有多种含义,它通常用于表示变量、特殊变量或参数,今天介绍几个特殊的变量。

  1. $0表示shell脚本文件本身
  2. 1 ~ n脚本的位置参数,表示脚本或函数的参数。例如,1表示第一个参数,2表示第二个参数,依此类推
  3. $#传递给脚本或函数的参数个数
  4. $@传递给脚本或函数的所有参数的列表,每个参数是一个独立的单词
  5. $?表示上一个命令的退出状态,如果为0表示成功,非零值表示失败
  6. $$表示当前脚本或进程的进程ID
  7. $!表示后台运行的最后一个进程的进程ID
  8. $*表示所有传递给脚本的参数列表(位置参数),并将它们作为一个单词显示
  9. $-用于显示当前Shell的选项设置

当运行 echo $- 时,它会输出一个包含不同字母的字符串

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# echo $-
himBH

每个字母的含义如下:

  • h: 启用hash命令功能,用于记住命令的路径,以加快命令的查找速度。
  • i: 启用Shell的交互模式。
  • m: 启用作业控制的多用户模式。
  • B: 启用通知作业完成状态的功能。
  • H: 启用Shell历史功能。

因此,himBH 表示这个Shell当前启用了 hash、交互模式、多用户模式、作业状态通知和历史功能。这些选项可以根据脚本或Shell的需要进行配置

注意:* 和 @ 在大多数情况下表现相似,但在处理引号时有一些关键的区别。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost]# cat b.sh && bash b.sh 
# 使用 "$*""$@"
set -- "arg1" "arg2 with space" "arg3"

echo 'Using "$*"'
for arg in "$*"; do
    echo $arg
done

echo 'Using "$@"'
for arg in "$@"; do
    echo $arg
done

Using "$*"
arg1 arg2 with space arg3
Using "$@"
arg1
arg2 with space
arg3

在" 在实际使用中,如果希望参数原封不动的传递出去,可能更适合使用"$@",它以类似数组的方式表示传递给脚本的所有参数。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT人家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档