我有一个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上试用过这个版本)
尽管我有更多的可this节点,但我总是得到这样的输出:
$ ./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发布于 2013-02-05 21:17:29
而不是:
for node in $nodes
do
echo "$node"
done每次我这样做的时候,它都会打印数组的第一个元素:
echo ${nodes[@]} https://stackoverflow.com/questions/14707961
复制相似问题