Bash - 操作时显示对话框信息框



我是第一次用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
    }
如果我

没看错,你想给用户"正在发生某些事情"的信号。我提出了两个解决方案。你可以和他们一起玩。

  1. 第一个在执行之前打印信息$(fping..
  2. 第二个使用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

我希望这是你:)所期望的。

最新更新