在bash脚本中定义curl--noproxy时,单引号包含的语法是什么



我想在bash脚本的curl定义中包含--noproxy'*'和curl,即

CURL='curl --noproxy '*' --fail --max-time 10 --silent --output /dev/null --write-out '%{http_code}\n''

但这并不能正确处理"*"。

echo$CURL

curl --noproxy * --fail --max-time 10 --silent --output /dev/null --write-out %{http_code}n

有人能建议noproxy要求的包含带*的单引号的正确语法吗?

如果你真的想把命令存储在某个地方,在执行它之前,不要使用标量,而是使用数组:

CURL=(curl --noproxy '*' --fail --max-time 10 --silent --output /dev/null --write-out '%{http_code}\n')

并使用执行

"${CURL[@]}"

这不仅使引用变得更容易,而且如果其中一个参数包含空格,也会起作用。

您需要转义两个',但curl不需要引号。引号只是为了防止外壳在curl看到它之前扩展*'*'*是等效的。

不要定义要作为命令执行的参数;定义函数

CURL () {
curl --noproxy '*' --fail --max-time 10 --silent --output /dev/null --write-out '%{http_code}n' "$@"
}

最新更新