gpt4 book ai didi

bash - 在没有参数传递给脚本时分配所有以 .suite 结尾的文件

转载 作者:行者123 更新时间:2023-11-29 09:38:35 25 4
gpt4 key购买 nike

我有一个脚本,您可以将测试套件作为参数传递给:

$ bash-specs a.suite b.suite

如果用户没有提供任何测试套件,则执行当前文件夹中的所有测试套件。这就是我目前的做法:

local suites

if (($# > 0)); then
suites=$@
else
suites=*.suite
fi

这是一个不错的解决方案,但我觉得还有更优雅的方法。如果没有给出参数,我基本上会寻找一些方法来进行条件赋值或设置默认值。

最佳答案

我会这样做:

if (( ! $# )); then
set -- *.suite
fi

现在您拥有 $1、$2 等中的文件名,无论用户是指定它们还是让它们默认。

一些注意事项:

您对 suites 的分配似乎没有产生任何有用的结果;它不是一个数组,所以您得到的要么是一个包含以空格分隔的文件名的字符串,要么是未扩展的 glob "*.suites"。我猜你稍后会以某种方式结束 eval,但这是个坏主意 - 文件名中的任何空格或时髦字符都会把事情搞砸。我建议遍历参数并单独处理它们,或者使用实际数组。

如果您使用类似我上面的代码片段的内容,"$@" 将扩展到所有参数,并像单独引用一样正确分隔。如果您要处理参数,可以将原始参数保存在数组变量中,如下所示:

suites=( "$@" )

然后使用 "${suites[@]}" 检索整个内容(再次正确分隔)。

关于bash - 在没有参数传递给脚本时分配所有以 .suite 结尾的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11484985/

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