bash脚本-z检查参数是否为空
Bash 脚本案例:使用 -z
检查参数是否为空
以下是一个完整的脚本示例,演示如何使用 -z
检查用户是否提供了必要的参数,并根据参数执行不同操作:
脚本功能
- 检查用户是否输入了 名字 和 年龄(两个必填参数)
- 如果没有提供参数,显示错误并退出
- 如果提供了参数,打印欢迎信息
脚本代码
#!/bin/bash
# 脚本名称:greet_user.sh
# 功能:检查用户输入参数并打印欢迎信息# 检查参数是否为空
if [ -z "$1" ] || [ -z "$2" ]; thenecho "错误:缺少参数!"echo "用法: $0 <名字> <年龄>"exit 1
fi# 如果参数正确,打印欢迎信息
name="$1"
age="$2"echo "----------------------------------------"
echo "欢迎, $name!"
echo "年龄: $age 岁"
echo "----------------------------------------"
脚本解析
代码部分 | 作用 |
---|---|
[ -z "$1" ] | 检查第一个参数(名字)是否为空 |
[ -z "$2" ] | 检查第二个参数(年龄)是否为空 |
` | |
echo "用法: $0 <名字> <年龄>" | 显示正确的脚本用法($0 是脚本名称) |
exit 1 | 以错误状态码退出(1 表示失败) |
name="$1" 和 age="$2" | 将参数赋值给变量,便于后续使用 |
运行测试
测试 1:不提供参数(触发错误)
$ ./greet_user.sh
输出:
错误:缺少参数!
用法: ./greet_user.sh <名字> <年龄>
测试 2:提供完整参数
$ ./greet_user.sh Alice 25
输出:
----------------------------------------
欢迎, Alice!
年龄: 25 岁
----------------------------------------
测试 3:只提供一个参数(触发错误)
$ ./greet_user.sh Bob
输出:
错误:缺少参数!
用法: ./greet_user.sh <名字> <年龄>
关键点总结
-
-z
的正确使用- 必须用引号包裹变量(如
"$1"
),否则空值会导致语法错误。 - 可以组合
||
或&&
实现多条件检查。
- 必须用引号包裹变量(如
-
用户友好的错误提示
- 显示
用法: $0 <参数>
帮助用户正确输入。
- 显示
-
退出状态码
exit 1
表示错误退出,exit 0
(默认)表示成功。
扩展练习
-
添加默认值
如果年龄未提供,默认设为20
:age=${2:-20} # 如果 $2 为空,age=20
-
检查年龄是否为数字
if ! [[ "$2" =~ ^[0-9]+$ ]]; thenecho "错误:年龄必须是数字!"exit 1 fi
-
使用
getopts
解析命名参数
(如./greet_user.sh -n Alice -a 25
)