macOS Monterey 12.3.1下curl依赖libssl.1.0.0.dylib缺失问题求助
解决macOS Monterey下curl依赖libssl.1.0.0.dylib缺失问题
错误根源
你的问题包含两个连锁错误:
/opt/local/bin/curl依赖的旧版本OpenSSL库libssl.1.0.0.dylib已不存在(当前系统安装的是更高版本的OpenSSL)- curl执行失败后无输出,导致
json_pp处理空字符串时抛出JSON格式错误
解决方案
方案1:修复MacPorts安装的curl依赖
如果坚持使用MacPorts的curl,重新安装并让它链接到当前系统的OpenSSL版本:
# 更新MacPorts仓库 sudo port selfupdate # 卸载旧版curl sudo port uninstall curl # 安装curl并指定链接OpenSSL 3(适配新版库) sudo port install curl +openssl3 # 验证curl是否正常工作 /opt/local/bin/curl --version
执行后curl会使用当前安装的OpenSSL库,不再依赖旧的1.0.0版本。
方案2:改用系统自带的curl(最省心)
macOS自带的curl不依赖第三方OpenSSL库,直接修改脚本中的curl和json_pp为系统绝对路径:
# 替换脚本中的curl为系统自带路径 /usr/bin/curl -H "$token" -H "Content-Type: application/json" \ --request POST --data-raw "{\"ECRN\": $arr, \"SCRN\":[]}" \ $url | /usr/bin/json_pp
这样完全避开第三方库的依赖问题,无需额外安装。
方案3:优化脚本的JSON生成逻辑(避免后续格式错误)
你手动拼接JSON的逻辑容易出现引号转义错误,建议用jq工具来生成标准JSON:
- 安装jq:
sudo port install jq
- 替换脚本中的
json_array函数和相关代码:
# 用jq生成JSON数组 arr=$(jq -n --args '$ARGS.positional' "${crn_list[@]}") # 用jq生成完整的请求JSON体 request_body=$(jq -n --argjson ecrn "$arr" '{"ECRN": $ecrn, "SCRN": []}') # 执行curl请求 /usr/bin/curl -H "$token" -H "Content-Type: application/json" \ --request POST --data-raw "$request_body" \ $url | /usr/bin/json_pp
这种方式能确保JSON格式完全正确,避免手动转义带来的问题。
内容的提问来源于stack exchange,提问作者Okan Zagor A.
相关产品推荐
相关产品推荐

