我可以选择在 curl 请求中包含用户和密码,如下所示:
declare creds=""
if [ -n "$user" ] && [ -n "$password" ]; then
creds="-u ${user}:${password}"
fi
output=$(curl ${creds} -X PUT -v --write-out "%{http_code}" "$url" \
-H 'Content-Type: application/json' -s -o /dev/null --data "${payload}")
这似乎工作正常,但我收到了这个 shellcheck 警告:
Double quote to prevent globbing and word splitting
https://github.com/koalaman/shellcheck/wiki/SC2086
在它周围加上引号是行不通的,例如,如果我这样做:
output=$(curl "${creds}" -X PUT -v --write-out "%{http_code}" "$url" \
-H 'Content-Type: application/json' -s -o /dev/null --data "${payload}")
那么当没有提供用户名和密码时,这会导致 curl 请求中的双引号为空curl "" -X PUT ...
,从而产生<url> malformed
错误。
我可以为 curl 命令使用 if-else,但我宁愿避免重复。尽管有 shellcheck 警告,上述方法是否可以接受?