我正在开发一个脚本,它是一个测试套件,可以使用curl检查所有无效的标题。
我创建了一堆函数,允许我使用默认测试值构建头文件tupe(field_name:field_value)。
build_foo_header() {
local FOO_KN=${1:-'X-App-Name'}
local FOO_KV=${2:-'MyApp'}
echo $FOO_KN: $FOO_KV
}
我想在函数中创建一些数组,缺少标题或带有无效值的标题来测试我的应用行为。
所以我创建了一个示例函数:
build_headers_invalid_X_App_Name_Value() {
HEADERS=()
# this array should contain all other required headers
HEADERS[0]=$(build_foo_header X-App-Name BadValue)
# HEADERS[1]= header that is required with default value
# and son on for all the remaning required headers
echo "${HEADERS[@]/#/-H}"
}
但是我无法卷曲如何将该数组传递给curl?
$(curl $(build_headers_invalid_X_App_Name_Value) myURl)
似乎将请求发送到HEADERS数组中的第一个标头。
我有大约10个必需的标题,这就是我想以这种方式编写脚本的原因。
答案 0 :(得分:0)
问题在于回显"${HEADERS[@]/#/-H}"
,你失去了HEADERS
元素中出现的空格与用于分隔输出中两个元素的空格之间的区别。
如果你想使用一个函数,你需要设置一个全局数组,然后直接使用它。不需要命令替换或有用。
build_foo_header() {
local FOO_KN=${1:-'X-App-Name'}
local FOO_KV=${2:-'MyApp'}
echo "$FOO_KN: $FOO_KV"
}
build_headers_invalid_X_App_Name_Value() {
HEADERS=()
# this array should contain all other required headers
HEADERS[0]=$(build_foo_header X-App-Name BadValue)
# HEADERS[1]= header that is required with default value
# and son on for all the remaning required headers
}
build_headers_invalid_X_App_Name_Value
curl "${HEADERS[@]/#/-H}" myUrl