文字列IPには、次の例に示すように、いくつかのIPアドレス番号が含まれています。
echo ${IP[*]}
192.9.200.1 192.9.200.2 192.9.200.3
kshシェルを使用してリストから特定のIPアドレス番号を削除できますか?
例えば
文字列「IP」からIP - 192.9.200.2を削除したいです。
だから私は次のようになります
echo ${IP[*]}
192.9.200.1 192.9.200.3
答え1
IP=(192.9.200.1 192.9.200.2 192.9.200.3)
remove=192.9.200.2
new=()
for ip in "${IP[@]}"; do [[ $ip != $remove ]] && new+=($ip); done
echo "${new[*]}"
192.9.200.1 192.9.200.3
または
for ((i=0; i<${#IP[@]}; i++)); do
[[ ${IP[i]} == $remove ]] && unset IP[i]
done
echo "${IP[*]}"
192.9.200.1 192.9.200.3
答え2
これは可能ですがハッシュされていないため、各要素を繰り返す必要があります。
i=0
for item in "${IP[@]}"; do
if [ "$item" = 192.9.200.2 ]; then
unset IP["$i"]
break # Remove this if the item could appear more than once
fi
let i++
done