在 Linux 中编写一个可以接收参数的脚本非常简单,主要通过 位置参数(Positional Parameters) 来实现。下面我将详细介绍如何编写和使用带参数的 Shell 脚本。
一、位置参数说明
当你运行一个脚本时,例如:
./script.sh arg1 arg2 arg3Shell 会自动将参数赋值给特殊变量:
变量 | 含义 |
| 脚本名称(如 |
| 第1个、第2个、第3个参数 |
| 传递的参数个数 |
| 所有参数的列表(" |
| 所有参数的列表(作为一个字符串) |
| 当前脚本的进程 ID |
| 上一条命令的退出状态 |
二、编写一个带参数的脚本示例
示例 1:简单参数输出
创建文件 hello.sh:
#!/bin/bash
echo "脚本名称: $0"
echo "第一个参数: $1"
echo "第二个参数: $2"
echo "参数总数: $#"
echo "所有参数: $@"赋予执行权限:
chmod +x hello.sh运行:
./hello.sh 张三 25输出:
脚本名称: ./hello.sh
第一个参数: 张三
第二个参数: 25
参数总数: 2
所有参数: 张三 25示例 2:带参数校验的脚本
#!/bin/bash
# 检查是否传入了至少一个参数
if [ $# -lt 1 ]; then
echo "用法: $0 <用户名> [年龄]"
exit 1
fi
name=$1
age=${2:-"未知"} # 如果没有第二个参数,默认为"未知"
echo "你好,$name!你的年龄是:$age"运行:
./greet.sh 李四 30
# 输出:你好,李四!你的年龄是:30
./greet.sh 王五
# 输出:你好,王五!你的年龄是:未知三、小技巧
1.引号保护参数中的空格:
./script.sh "北京 上海" "广州 深圳"这样 $1 是 "北京 上海",而不是只取“北京”。
2.遍历所有参数:
for arg in "$@"; do
echo "参数: $arg"
done四、总结
- 使用
$1,$2, ... 获取参数 - 使用
$#判断参数个数 - 使用
$@遍历所有参数 - 记得加
#!/bin/bash和执行权限
















