我有一个运行的脚本curl
。我希望能够有选择地添加-H
参数,如果字符串不为空。复杂的是引用和空格的级别。
caption="Test Caption"
if [ "${caption}" != "" ]; then
CAPT=-H "X-Caption: ${caption}"
fi
curl -A "$UA" -H "Content-MD5: $MD5" -H "X-SessionID: $SID" -H "X-Version: 1" $CAPT http://upload.example.com/$FN
这个想法是 CAPT 变量要么是空的,要么包含所需的 -H 标头,其形式与其他标头相同,例如,-H "X-Caption: Test Caption"
问题是运行时,它将分配解释为要执行的命令:
$bash -x -v test.sh
+ '[' 'Test caption' '!=' '' ']'
+ CAPT=-H
+ 'X-Caption: Test caption'
./test.sh: line 273: X-Caption: Test caption: command not found
我已经尝试在代码之前重置 IFS,但没有效果。
完成这项工作的关键是使用数组。
caption="Test Caption"
if [[ $caption ]]; then
CAPT=(-H "X-Caption: $caption")
fi
curl -A "$UA" -H "Content-MD5: $MD5" -H "X-SessionID: $SID" -H "X-Version: 1" "${CAPT[@]}" "http://upload.example.com/$FN"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)