以下bash脚本返回4,而应为2,即2 IPS。
#!/bin/bash
STR="1.1.1.1***2.2.2.2"
IFS="***" read -ra IPArray <<< "$STR"
echo ${#IPArray[@]}
答案 0 :(得分:2)
IFS表示分隔字符,而不是字符串。 IFS="***"
表示*或*或*。
因此您可以在不使用IFS的情况下对其进行修改:
STR="1.1.1.1***2.2.2.2"
STR2=$(echo $STR | tr '*' ' ')
read -ra IPArray <<< "$STR2"
echo ${#IPArray[@]}
答案 1 :(得分:1)
IFS将每个字符视为定界符。 https://bash.cyberciti.biz/guide/$IFS 这就是为什么在代码中将数组大小设为4的原因。 您应该让regexp将字符串用作IFS。