在 Bash 中,数组会为可复用的 curl 调用保留参数:

curl_options=(--noproxy '*' --fail --max-time 10)
curl "${curl_options[@]}" 'https://api.example/'

创建数组时,单引号保护了星号。它们属于 shell 语法,因此数组只存下一个字面量 * 字符。随后,双引号中的数组展开会把每个元素作为独立参数传出去。

这里的 --noproxy '*' 让 curl 对任何目标都绕过代理。如果只想让选定目标直连,请改用预期的目标主机列表。

包含 curl --noproxy '*' 这类文本的标量无法保留同样的结构。变量展开后产生的引号在那个阶段只是普通字符;Bash 不会自动把它们重新解析成引号语法。当函数用 "$@" 转发参数时,函数也是存放固定选项的合适位置。

相关文章