我是第一次使用bash编写脚本。我将创建一个带有对话框的菜单,并添加一些功能。我喜欢在操作运行期间显示--infobox,以便用户看到正在发生的事情。
目标是拥有一个类似
的对话框dialog --infobox "Please wait" 10 30
在脚本执行ping操作时。如果ping操作完成,则会打开--msgbox对话框。
test_rtt() {
ipSlave=$(awk '{ if($1~/'$SETSLAVE'/) print $2 }' $VARPATH/$VARCONFIGFILE)
pingSlave=$(fping -c1 -t300 $ipSlave 2>/dev/null 1>/dev/null)
if ! [ "$?" = 0 ]
then
result="Loopbox (Slave) not found on $ipSlave"
dialog \
--backtitle "$VARBACKTITLE" \
--title "$1" \
--no-collapse \
--msgbox "$result" $VARMENUHEIGHT $VARMENUWIDTH
fi
nrtest=$(awk '{ if($1~/'$SETNRTEST'/) print $2 }' $VARPATH/$VARCONFIGFILE)
intervl=$(awk '{ if($1~/'$SETINTERVL'/) print $2 }' $VARPATH/$VARCONFIGFILE)
result=$(ping -c $nrtest -i $intervl -U 192.168.74.93 | tail -1) #(HERE I WANT THE INFOBOX)
dialog \
--backtitle "$VARBACKTITLE" \
--title "$1" \
--no-collapse \
--msgbox "$result" $VARMENUHEIGHT $VARMENUWIDTH
}
答案 0 :(得分:0)
如果我正确地理解了您,则希望向用户发出“正在发生某些事情”的信号。我提出了两种解决方案。您可以和他们一起玩。
$(fping..
之前打印信息dialog --progressbox
来使进度框对用户可见。我修改了您的代码,因此ping 8.8.8.8并检查其是否可用。
#!/bin/bash
test_rtt() {
dialog --infobox "Please wait" 10 30
pingSlave=$(fping -c5 -t300 8.8.8.8 2>/dev/null 1>/dev/null)
# What is reason for introducing pingSlave var :)?
if [ "$?" = 0 ]
then
result="Ping succeed for 8.8.8.8"
dialog \
--backtitle "test1" \
--title "test2" \
--no-collapse \
--msgbox "$result" 50 50
fi
}
test_rtt_2() {
fping -c5 -t300 8.8.8.8 | dialog --progressbox 50 50
if [ "$?" = 0 ]
then
result="Ping succeed for 8.8.8.8"
dialog \
--backtitle "test1" \
--title "test2" \
--no-collapse \
--msgbox "$result" 50 50
fi
}
test_rtt
dialog --clear
test_rtt_2
dialog --clear
我希望这是您所期望的:)。