首页 > 解决方案 > Bash - 对话框 msgbox 管道进入仪表

问题描述

在此代码上:

#!/bin/bash

for i in {1..50}; do
   #if [ ! $(jobs -rp | grep $pid) ]; then
      dialog --msgbox "Instance initilation failure!" 0 0

   #   return 1
   #fi

   sleep 1
   echo $((i * 2))
done | dialog --title "Initiating instance" --gauge "Please wait..." 10 60 0

dialog --msgbox正在通过管道输入,因此gauge仪表不起作用,并且 msgbox 没有出现。

有没有可能避免这种情况发生?要显示 msgbox,然后输入return

标签: bashdialogpipe

解决方案


也许只是将对话调用放在循环中。我建议如下:

#!/bin/bash

for i in {1..5}; do
   #if [ ! $(jobs -rp | grep $pid) ]; then
        dialog --msgbox '"Instance initilation failure!"' 0 0

   #   return 1
   #fi
   (
        echo "$((i * 2))"
        sleep 1
   ) | dialog --title "Initiating instance" --gauge "Please wait..." 10 60 0
done 

推荐阅读