首页 > 解决方案 > bash中的字符串拆分分隔符返回两倍大小

问题描述

以下 bash 脚本返回 4 而它应该是 2 即 2 IPS。

#!/bin/bash

STR="1.1.1.1***2.2.2.2"
IFS="***" read -ra IPArray <<< "$STR"
echo ${#IPArray[@]}

标签: bashsplitdelimiter

解决方案


IFS 表示分隔字符,而不是字符串。IFS="***"表示 * 或 * 或 *。

所以你可以在没有 IFS 的情况下修改它:

STR="1.1.1.1***2.2.2.2"
STR2=$(echo $STR | tr '*' ' ')
read -ra IPArray <<< "$STR2"
echo ${#IPArray[@]}

推荐阅读