You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写支持可选参数的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:35:18