bash - 使用列表操作 bash 脚本字符串
问题描述
我想用映射的端口生成一个逗号分隔的 ip 值并创建一个字符串。
这是我的代码:
zk_ip="['192.168.0.10', '192.168.0.20', '192.168.0.30']"
zk_host=""
for i in $zk_ip[@]
do
add=$(echo "$i:2181")
zk_host="$zk_host $add"
done
echo $zk_host
输出:
[192.168.0.10,:2181 192.168.0.20, :2181 192.168.0.30]:2181
预期输出:
192.168.0.10:2181, 192.168.0.20:2181, 192.168.0.30:2181
解决方案
因此,您有一个要修改的 JSON 格式的数组(JSON 字符串用双引号括起来)。
我会使用 JSON 解析器来管理这个:jq
zk_ip="['192.168.0.10', '192.168.0.20', '192.168.0.30']"
new_ip=$(echo "$zk_ip" | tr "'" '"' | jq -c 'map("\(.):2181")')
echo "$new_ip"
["192.168.0.10:2181","192.168.0.20:2181","192.168.0.30:2181"]
如果您希望输出看起来不像 JSON,您可以执行以下操作:
new_ip=$(echo "$zk_ip" | tr "'" '"' | jq -r 'map("\(.):2181") | join(", ")')
echo "$new_ip"
192.168.0.10:2181, 192.168.0.20:2181, 192.168.0.30:2181
推荐阅读
- html - 有什么方法可以在 gmail 中制作简单和自定义的 HTML/CSS 电子邮件签名?
- javascript - 将 Django 表单传递给 js
- java - 为什么在快速排序中对左侧分区进行排序时包含枢轴元素?
- python - 使用 BS4 抓取数据 - 文本条()不起作用
- maven - maven release:perform 甚至无法尝试生成 javadoc 或源
- python - 即使发生错误也继续运行 python 代码?
- python-3.x - 如何使用正则表达式在 python 中获取所有可能的表情符号?
- android - 我如何确认客户端(安卓应用程序)数据已由 GCP 云功能完成处理?
- swift - 在 Swift 中从数据中加载一系列结构
- flutter - Flutter 参数类型“动态”不能分配给参数类型“num”错误