【发布时间】:2013-10-04 13:50:53
【问题描述】:
我有以下脚本:
#!/bin/bash
function doPing () {
pings=0
#cat /home/scripts/test.txt | while read server ; do
#while [ $pings -le 3 ] ; do
echo success1 $pings
if [ 1 -eq 1 ]; then {
pings=$(expr $pings + 1)
echo success- $pings
} else if [ 1 -eq 2 ]; then {
pings=$(expr $pings + 1)
echo not
} else {
pings=$(expr $pings + 1)
echo known
} fi
fi
echo success3 $pings
done
echo -e "\nSuccessfully pinged $pings.\n"
}
doPing
test.txt 包含几行服务器名称,其实没关系。
我的问题是,当我取消注释 #while ... 行时,我得到:
success1 0
success- 1
success3 1
success1 1
success- 2
success3 2
success1 2
success- 3
success3 3
success1 3
success- 4
success3 4
success1 4
success- 5
success3 5
Successfully pinged 0.
但是当我取消注释 #cat ... 行时,我得到:
success1 0
success- 1
success3 1
success1 1
success- 2
success3 2
success1 2
success- 3
success3 3
success1 3
success- 4
success3 4
Successfully pinged 4.
我怎样才能使#while 输出将被ping 一些数字,例如#cat ...,而不是零?请帮忙。谢谢。
【问题讨论】:
-
这很挑剔(不是您的问题),但您可能需要将
#!/bin/bash调整为#!/usr/bin/env bash。这对其他系统更便携,因为它使用由环境变量指定的bash。就这个问题而言,我敢打赌有人会打败我,但我现在正在本地查看。