0

ファイルにあるノードのリストが生きているかどうかを確認するための for ループがあります。

#!/bin/bash
tmpnodes=$(cat $1)
#declare -a nodes
nodes=()
for node in $tmpnodes
do
        result=$(ping -q -c 1 -W 2 $node >/dev/null 2>&1; echo $?)
        echo "Result: $result, on node $node"
        if [ $result -eq 0 ] ; then
                nodes+=("$node")
                #nodes=(${nodes[@]} "$node")
        fi
done

echo "pingable nodes:"
for node in $nodes
do
        echo "$node"
done

( のバージョンも試しましたdeclare)

より多くのping可能なノードがありますが、常に次の出力が得られます:

$  ./script.sh nodes
Result: 1, on node clab148node11
Result: 1, on node clab148node12
Result: 0, on node clab148node15
Result: 0, on node clab148node16
Result: 0, on node clab148node17
Result: 0, on node clab148node18
pingable nodes:
clab148node15
4

1 に答える 1

0

それ以外の:

for node in $nodes
do
        echo "$node"
done

これは、私がこれを行うたびに、実際に配列の最初の要素を出力していました:

echo ${nodes[@]} 
于 2013-02-05T13:17:29.060 に答える