【发布时间】:2020-02-29 03:24:16
【问题描述】:
现在我在 bash 中有一个 JSON 字符串:
str='{"output_name":"http://HOST:33445/data/results/merged_video.mp4"}'
我从一个命令中得到了一个 IP 地址:
HOST_IP_FOR_FUNC="$(minikube ssh "route -n | grep ^0.0.0.0 | awk '{ print \$2 }'")" && echo $HOST_IP_FOR_FUNC
结果是192.168.64.1。
我想用这个变量替换str中的“HOST”。
所以我用了:
z=${str//HOST/$HOST_IP_FOR_FUNC} && echo $z
只有得到
:33445/data/results/merged_video.mp4"}
但是,如果我明确地为 HOST_IP_FOR_FUNC 赋值:
ip="192.168.64.1"
z=${str//HOST/$ip} && echo $z
然后我得到了我想要的:
{"output_name":"http://192.168.64.1:33445/data/results/merged_video.mp4"}
我该如何处理?
我在 MacOS 10.15.3 上使用 zsh 或 bash
根据@Cyrus,我得到了他建议的命令的输出:
minikube ssh "route -n | grep ^0.0.0.0 | awk '{ print \$2 }'" | hexdump -C
00000000 31 39 32 2e 31 36 38 2e 36 34 2e 31 0d 0a |192.168.64.1..|
0000000e
【问题讨论】:
-
您的 minikube 命令中似乎有一些未转义的 " 符号。您的
HOST_IP_FOR_FUNC没有正确填充。尝试转义,即在命令中的第二个和第三个 " 中使用\"。 -
将
minikube 'ssh route -n' | grep ^0.0.0.0 | awk '{ print $2 }' | hexdump -C的输出添加到您的问题(无评论)。
标签: bash