linux shell中$1、$2等获取命令行参数,$0为脚本名,超9需${10};用$#判断个数,"$1"防拆分;"$@"逐个传参,"$*"合并;set可重置或追加参数。

在 Linux Shell 脚本中,可以通过特殊变量 $1、$2、$3 …… 直接获取传递给脚本的命令行位置参数,其中 $1 表示第一个参数,$2 表示第二个,依此类推。
基础用法:直接引用参数
脚本中使用 $n(n 为正整数)即可读取对应位置的参数:
- $0 是脚本自身名称(含路径,取决于如何调用)
- $1 是第一个实际传入的参数
- $2 是第二个参数,以此类推
- 超过 9 的参数需写成 ${10}、${11} 等(花括号不可省略)
判断参数个数和安全访问
避免因参数缺失导致错误,建议先检查参数数量:
- 用 $# 获取参数总个数(不含 $0)
- 用 [ $# -lt 1 ] 判断是否至少传了一个参数
- 推荐对关键参数加引号引用,如 "$1",防止空格或通配符引发意外拆分
遍历所有参数:使用 $@ 和 $*
当需要统一处理全部参数时:
- $@:将每个参数作为独立字符串,保留原始分隔(推荐用于循环或转发)
- $*:将所有参数拼成单个字符串,以第一个 IFS 字符(通常是空格)连接
- 常用遍历写法:for arg in "$@"; do echo "$arg"; done
重置参数:set 命令
可用 set 命令动态修改位置参数内容,例如:
- set -- "new1" "new2" "new3" 会把 $1~$3 重设为这三个值
- set -- "$@" "extra" 可在末尾追加一个参数
- 常用于参数预处理、过滤或标准化入口参数











