【发布时间】:2019-12-31 12:34:43
【问题描述】:
我正在尝试构建一个返回 curl 参数的函数:
get_common_curl_headers() {
local crash_path="$1"
echo -n \
"-H 'Accept: text/plain'" \
"-F 'model=<$crash_path/model'" \
"-F 'version=<$crash_path/fw_version'"
echo -n ' '
}
我希望将返回的文件路径引用为$crash_path 变量可能包含空格。然后我像这样使用这个函数:
send_app_crash() {
local crash_path="$1"
local common_headers
common_headers=$(get_common_curl_headers "$crash_path")
[ $? -ne 0 ] && return 1
curl -vk -X POST \
$common_headers\
"$SERVER_URL"
}
我在这里使用未引用的变量$common_headers,因为我希望扩展参数,据我了解应该可以。但是,该命令会导致此错误:
curl: (6) Couldn't resolve host 'text'
curl: (26) couldn't open file "/tmp//model'"
奇怪的是,文件名末尾有一个额外的单引号,应该已被 shell 删除。我也不确定第一个错误是什么意思,因为 Accept: text/plain 似乎被正确引用(见下文)。
手动运行命令(即在命令出现在脚本中之前执行 set -x 并将其通过管道传送到 sh)按预期工作:
curl -vk -X POST -H 'Accept: text/plain' -F 'model=</tmp//model' -F 'version=</tmp//fw_version' 192.168.2.100:8888
【问题讨论】: