在Shell脚本中,$符号有多种含义,它通常用于表示变量、特殊变量或参数,今天介绍几个特殊的变量 。
- $0表示shell脚本文件本身
- $1 ~ $n脚本的位置参数,表示脚本或函数的参数 。例如,$1表示第一个参数,$2表示第二个参数,依此类推
- $#传递给脚本或函数的参数个数
- $@传递给脚本或函数的所有参数的列表,每个参数是一个独立的单词
- $?表示上一个命令的退出状态,如果为0表示成功,非零值表示失败
- $$表示当前脚本或进程的进程ID
- $!表示后台运行的最后一个进程的进程ID
- $*表示所有传递给脚本的参数列表(位置参数),并将它们作为一个单词显示
- $-用于显示当前Shell的选项设置
# echo $-himBH每个字母的含义如下:- h: 启用hash命令功能,用于记住命令的路径,以加快命令的查找速度 。
- i: 启用Shell的交互模式 。
- m: 启用作业控制的多用户模式 。
- B: 启用通知作业完成状态的功能 。
- H: 启用Shell历史功能 。
注意:$* 和 $@ 在大多数情况下表现相似,但在处理引号时有一些关键的区别 。
[root@localhost]# cat b.sh && bash b.sh # 使用 "$*" 和 "$@"set -- "arg1" "arg2 with space" "arg3"echo 'Using "$*"'for arg in "$*"; doecho $argdoneecho 'Using "$@"'for arg in "$@"; doecho $argdoneUsing "$*"arg1 arg2 with space arg3Using "$@"arg1arg2 with spacearg3在"$*"中,所有参数被当作单个字符串 , 参数之间用第一个字符(默认是空格)分隔 。而在"$@"中 , 每个参数都被当作独立的字符串 。在实际使用中,如果希望参数原封不动的传递出去,可能更适合使用"$@",它以类似数组的方式表示传递给脚本的所有参数 。
【Linux 系统 Shell 中那些特殊变量】
推荐阅读
- 拯救爆表的MySQL:小红书万亿级存储系统自研与迁移之路
- 新旧电脑之间文件迁移,如何对整个电脑系统中的文件进行保存呢
- 怎么安装电脑系统win7系统教程
- 新硬盘如何分区安装系统 新硬盘如何分区
- 这些 Linux 基础命令你总得掌握吧
- 你了解Android中的SELinux吗?
- 苹果切换双系统开机按什么,苹果12怎么开机直接进入主屏幕
- 怎么清理电脑系统盘垃圾
- 路由器是猫一键重装系统
- 电脑系统安装日期怎么查
