gpt4 book ai didi

linux - getopts 空参数和默认值

转载 作者:太空宇宙 更新时间:2023-11-04 11:57:23 25 4
gpt4 key购买 nike

我的要求很简单,我只是想检查getopts参数是否为空。我正在使用 jenkins 启动我的脚本,需要检查提供的值是否为空然后设置默认值,否则使用提供的值: enter image description here

并将参数传递给 shell 脚本,如下所示:

./rds-db-dump.sh -s ${source_instance_id}  -c ${target_instance_class} -i ${source_snapshot_id}

shell 脚本的片段:

while getopts ":s:c:i:h" opt; do
case ${opt} in
s) SOURCE_INSTANCE_ID="${OPTARG}"
;;
c) TARGET_INSTANCE_CLASS="${OPTARG}"
;;
i) SOURCE_SNAPSHOT_ID="${OPTARG}"
;;
h) usage && exit 1
;;
\?) echo "Invalid option -${OPTARG}" >&2
usage && exit 1
;;
esac
done

echo "SOURCE_SNAPSHOT_ID: ${SOURCE_SNAPSHOT_ID}"
echo "TARGET_INSTANCE_CLASS: ${TARGET_INSTANCE_CLASS}"

当我开始这项工作时,它没有给我想要的结果: enter image description here

我如何使用 getopts 来检查参数是否为空,而不是分配一些默认值来执行某些操作,否则使用提供的参数值。

最佳答案

它实际上并不在 getopts 中,但是你可以让你的 shell 以不同的方式扩展变量,例如它是否为空

    i) SOURCE_SNAPSHOT_ID="${OPTARG:-yourdefaultvalue}"

或者,您可以只检查 OPTARG 是否为空并继续,或者在整个循环之后设置默认值,例如当且仅当它之前为空时,其中任何一个都会设置 SOURCE_SNAPSHOT_ID

: ${SOURCE_SNAPSHOT_ID:=yourdefaultvalue}
SOURCE_SNAPSHOT_ID=${SOURCE_SNAPSHOT_ID:-yourdefaultvalue}

有关此类变量用法的更多信息,请参阅 bash 手册的“参数扩展”(仅引用我使用的两个):

   ${parameter:-word}
Use Default Values. If parameter is unset or null, the expansion of word is substituted.
Otherwise, the value of parameter is substituted.
${parameter:=word}
Assign Default Values. If parameter is unset or null, the expansion of word is assigned to
parameter. The value of parameter is then substituted. Positional parameters and special
parameters may not be assigned to in this way.

关于linux - getopts 空参数和默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53772014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com