【发布时间】:2017-10-11 03:14:29
【问题描述】:
尝试在 contos7 上按我的预期执行以下操作:
pod_in_question=$(curl -u uname:password -k very.cluster.com/api/v1/namespaces/default/pods/ | grep -i '"name": "myapp-' | cut -d '"' -f 4)
echo "$pod_in_question"
curl -u uname:password -k -X DELETE "very.cluster.com/api/v1/namespaces/default/pods/${pod_in_question}"
但是,在 MacOS (10.12.1) 上尝试相同的操作会产生:
curl:(3) [globbing] 第 92 列中的错误范围
当我尝试 curl 使用 -g 选项的最后一行时,它会替换为格式错误的名称,例如:myapp-\\x1b[m\\x1b[Kl1eti\
echo 语句总是可以正常执行并显示类似myapp-v7454 的内容,我稍后想将其放入最后一个 curl 语句中。那么这些其他角色是从哪里来的呢?
【问题讨论】:
-
如果有更多信息会很好,因为您的示例都不可重复。在 Mac 上,
pod_in_question有什么价值?也许存在字符编码问题。如果是这样,您可以通过iconv 翻译它。但是您在最后一部分显示的替换看起来像是您注入的一个调用ANSI escape sequences。 grep 可能没有检测到非 TTY 输出并且正在着色。尝试将--color=never参数添加到 grep。 -
@paddy 更新了更多信息
-
你需要调试你的调用链。这些转义序列设置屏幕模式并擦除行。使用
echo将其输出到支持转义序列的终端会有 appearance 没问题。相反,您为什么不通过echo "$pod_in_question" | hexdump -C检验您的价值。 -
我同意 paddy - hexdump 会提供非常丰富的信息。其他有用的输出可以由
printf '%q\n' "$pod_in_question"而不是echo生成。 -
@paddy,你一直都是对的。 Hexdump 很高兴
myapp-\E[m\E[K08wsz来自 grep 的颜色。添加建议的选项已删除不需要的转义字符。请将您的评论作为答案,以便我接受。
标签: bash macos shell curl command-line