我想在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' "$@"
}