gpt4 book ai didi

linux - 读取函数内部的选项并将其作为值返回

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:26 24 4
gpt4 key购买 nike

我正在尝试编写一个函数来解析我的参数。这是它的样子:

opts_get(){
CONFIG=()
while getopts "f:" opt; do
case $opt in
f)
CONFIG=$OPTARG
;;
:)
echo "Option -$OPTARG requires argument" 1>&2
exit 1
;;
\?)
echo "Invalid option -$OPTARG" 1>&2
exit 1
;;
esac
done
echo $CONFIG
}

echo $(opts_get)

但不幸的是,即使我传递了 -f sdf 选项,它也会打印空行。

如果我将阅读选项代码放在任何函数之外

CONFIG=()
while getopts "f:" opt; do
case $opt in
f)
CONFIG=$OPTARG
;;
:)
echo "Option -$OPTARG requires argument" 1>&2
exit 1
;;
\?)
echo "Invalid option -$OPTARG" 1>&2
exit 1
;;
esac
done
echo $CONFIG #prints what I want

最佳答案

您没有将参数传递给函数。您需要将它从脚本传递给函数,如下所示。

echo $(opts_get "$@")

第二个nd 案例成功了,因为来自命令行的位置参数由getopts 直接读取。还要将变量初始化修复为 CONFIG="" 而不是数组声明。

您还需要通过取消设置或将其声明为本地来确保 ${OPTIND} 在函数中是本地的,否则您在多次调用该函数时会遇到意外行为。

关于linux - 读取函数内部的选项并将其作为值返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47676774/

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