从Python脚本获取Bash变量后,如何在curl URL中正确使用?
解决Bash变量含不可见字符导致curl请求失败的问题
你的问题核心是:Python脚本返回的结果看似是纯数字,但实际包含换行符或其他不可见空白字符,这些字符被带入Bash变量后,导致curl请求的URL中混入了无效内容,服务器无法正确解析;而手动输入时没有这些多余字符,所以请求正常。
解决方案
1. 赋值时直接清理多余字符
在捕获Python输出的同时,用tr命令移除所有空白类字符(换行、回车、空格等):
POST=$(python3 /repo/post.py | tr -d '\n\r ')
或者用sed仅删除尾部的空白:
POST=$(python3 /repo/post.py | sed -e 's/[[:space:]]*$//')
2. 用Bash内置处理去除尾部换行
如果确认只有尾部换行问题,可直接用Bash参数扩展清理:
POST=$(python3 /repo/post.py) POST=${POST%$'\n'} # 移除变量末尾的换行符
验证方法
可以用od命令查看变量的实际内容,确认是否存在不可见字符:
echo -n "${POST}" | od -c
如果输出中出现\n或\r,说明确实存在多余字符,清理后再执行curl即可得到正确结果。
内容的提问来源于stack exchange,提问作者Marta
相关产品推荐
相关产品推荐

