如何编写支持可选参数的Shell脚本?无参数时使用默认值
Shell脚本实现可选参数与默认值设置
下面提供几种实用的实现方式,对应你需要的「未传参数时用默认值」的需求:
方法一:基础位置参数判断
直接检查第一个位置参数是否存在,逻辑和你给出的Python示例最接近:
#!/bin/bash # 预设默认IP DEFAULT_IP='10.9.2.16' # 判断是否传入参数,有则使用传入值,无则用默认值 if [ -n "$1" ]; then IP="$1" else IP="$DEFAULT_IP" fi # 测试输出 echo "当前使用的IP: $IP"
运行方式:
- 传参数:
./your_script.sh 192.168.1.100 - 不传参数:
./your_script.sh,自动用10.9.2.16
方法二:Shell参数展开(简洁写法)
用Shell内置的参数替换语法,一行完成赋值,更简洁高效:
#!/bin/bash DEFAULT_IP='10.9.2.16' # 语法说明:如果$1存在且非空则用$1,否则用DEFAULT_IP的值 IP="${1:-$DEFAULT_IP}" echo "当前使用的IP: $IP"
方法三:带选项名的参数(适合多参数场景)
如果需要更规范的选项式传参(比如-i 指定IP),可以用getopts实现:
#!/bin/bash DEFAULT_IP='10.9.2.16' IP="$DEFAULT_IP" # 解析命令行选项 while getopts ":i:" opt; do case $opt in i) # 接收-i后面的参数值 IP="$OPTARG" ;; \?) echo "无效选项: -$OPTARG" >&2 exit 1 ;; :) echo "选项 -$OPTARG 需要传入参数值" >&2 exit 1 ;; esac done echo "当前使用的IP: $IP"
运行方式:
- 指定IP:
./your_script.sh -i 10.0.0.5 - 不指定:
./your_script.sh,自动用默认值
内容的提问来源于stack exchange,提问作者PriceyCash
相关产品推荐
相关产品推荐

