Bash脚本ORDER_BY参数无输入时的初始化错误解决
解决思路与代码修改
你遇到的问题本质是:当ORDER_BY为空时,你还是把这个参数(空值)传给了API,导致接口无法正确解析请求,返回错误HTML页面。正确的做法是只有当ORDER_BY有合法有效值时,才把对应的参数加入curl请求,而不是传空值。
修改步骤:
- 先定义合法的排序选项,避免传入非法值:
VALID_ORDERS=("RELEVANCE" "TITLE_ASC" "TITLE_DESC")
- 初始化一个空的参数变量,根据
ORDER_BY的值决定是否拼接参数:
ORDER_PARAM="" # 检查ORDER_BY非空且属于合法选项 if [[ -n "$ORDER_BY" && " ${VALID_ORDERS[@]} " =~ " $ORDER_BY " ]]; then ORDER_PARAM="&orderBy=$ORDER_BY" fi
- 在curl命令中拼接这个参数(请根据实际API地址调整):
curl "https://api.nlc.cn/search?query=$QUERY$ORDER_PARAM"
为什么原来的写法无效?
你原来的if [ -z "$ORDER_BY" ]; then ORDER_BY="${ORDER_BY:-}"; fi完全是多余操作——${ORDER_BY:-}本身就是取ORDER_BY的当前值,为空时还是空,根本没起到初始化作用,反而让你误以为处理了空值,最终还是把空的orderBy参数传给了API。
这样修改后,当没有传入ORDER_BY或者传入的值不合法时,请求里不会包含orderBy参数,API会使用默认排序规则返回正确结果,而非错误页面。
内容的提问来源于stack exchange,提问作者farid
相关产品推荐
相关产品推荐

