gpt4 book ai didi

用于解析参数的 bash 工具

转载 作者:行者123 更新时间:2023-11-29 09:32:22 26 4
gpt4 key购买 nike

我有一个使用一些变量的 bash 脚本(称它们为 $foo$bar)。现在脚本在顶部使用如下硬编码值定义它们:

foo=fooDefault
bar=barDefault

....

# use $foo and $bar

我想要的是能够像以下任何一个一样使用脚本:

myscript              # use all defaults
myscript -foo=altFoo # use default bar
myscript -bar=altBar # use default foo
myscript -bar=altBar -foo=altFoo

理想的解决方案是让我只列出要检查其标志的变量。

有没有一个相当不错的方法来做到这一点?


我看过 getopt我认为它可能会完成我正在寻找的大约 70% 的功能,但我想知道是否有一种工具或基于它构建的铟或类似的东西可以得到其余的。

最佳答案

您可以使用 eval 做一些接近的事情:

foo=fooDefault
bar=barDefault

for arg in "$@"; do
eval ${arg}
done

这个版本没有前导破折号,所以你可以运行它:

myscript foo=newvalue

话虽如此,还是要提醒几句。因为我们使用的是 eval,所以调用者可以将他们想要的任何代码/数据注入(inject)到您的脚本中。如果您需要确保代码安全,则必须在eval 之前验证${arg}

此外,如果您需要在数据中包含空格,这不是很优雅,因为您必须将它们用双引号引起来(一次用于命令行,第二次用于内部 eval):

myscript foo='"with sapces"'

关于用于解析参数的 bash 工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2851278/

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