リストから要素を削除する方法は?

リストから要素を削除する方法は?

ホスト名リストを出力するコマンドを作成しました。たとえば、次のようになります。

clab148node11
clab148node12
clab148node15
clab148node16

ここで、pingに応答しないノードを削除したいと思います。今、次のようなものがあります。

for node in $nodes
do
         result=$(ping -c 1 $node; echo $?)
done

$result今、ゼロ以外のノードをどのように削除しますか?

ベストアンサー1

私は新しいリストを作成し、古いリストを新しいリストに置き換えることを好みます。

nodes="127.0.0.1 1.2.3.4 1.2.3.4 "
nodes_out=
for node in $nodes
do 
    ping -c 1 $node >/dev/null 2>&1 && nodes_out+=$node
done
nodes=$nodes_out

おすすめ記事