如何使用变量构建curl URL?循环批量发DELETE请求遇变量注入问题
问题解决
完全可以通过这种方式构建URL,你的问题只是命令输入时的语法错误导致的。
错误原因
你在测试时错误地给分号加了反斜杠\;,这会让Shell把分号当成普通字符,而非用来分隔do与后续命令的语法符号,进而导致Shell认为循环体未完成,因此出现for>的等待输入提示符。
正确写法
测试URL构建(echo模拟)
for build in $queued_builds; do echo "https://www.test.org/$build"; done
执行后会正常输出每个ID对应的URL:
https://www.test.org/230 https://www.test.org/231 https://www.test.org/232 https://www.test.org/233
实际发送DELETE请求
把echo替换成curl命令即可:
for build in $queued_builds; do curl -X DELETE "https://www.test.org/$build"; done
更健壮的写法(处理含特殊字符的ID)
如果$queued_builds中的ID可能包含空格或特殊字符,建议先将其转为数组再遍历,避免拆分错误:
# 将ID列表转为数组 queued_builds_array=($queued_builds) # 遍历数组发送请求 for build in "${queued_builds_array[@]}"; do curl -X DELETE "https://www.test.org/$build" done
内容的提问来源于stack exchange,提问作者Scott
相关产品推荐
相关产品推荐

