bash - bash中的字符串拆分分隔符返回两倍大小
问题描述
以下 bash 脚本返回 4 而它应该是 2 即 2 IPS。
#!/bin/bash
STR="1.1.1.1***2.2.2.2"
IFS="***" read -ra IPArray <<< "$STR"
echo ${#IPArray[@]}
解决方案
IFS 表示分隔字符,而不是字符串。IFS="***"
表示 * 或 * 或 *。
所以你可以在没有 IFS 的情况下修改它:
STR="1.1.1.1***2.2.2.2"
STR2=$(echo $STR | tr '*' ' ')
read -ra IPArray <<< "$STR2"
echo ${#IPArray[@]}
推荐阅读
- github - 如何在 github 上恢复已删除的组织?
- java - 在java中调整地图实现的大小
- javascript - 根据页面文本隐藏 HTML 元素
- unix - 如何在子进程终止之前读取子进程的 /proc/PID/maps
- cakephp - 在 cakephp 的同一个视图文件上创建两个动作?
- spring - spring-rest-docs 无法使用 gradle kotlin 生成片段
- swiftui - 返回多个选项的形状
- node.js - 用于生产的 ExtJs 7(社区)npm 构建不起作用
- javascript - “字符串”类型的参数不可分配给 ConsumablesBoard 类型的参数(完整)
- python - 在右表上合并而不重复