这是一个 for 循环,它运行一个常规的 Whiptail 仪表。在这个循环中,一个命令可能会引发错误,我想显示一个--msgbox
显示错误的消息框。在那之后,我可以让脚本继续下去,就像错误从未发生过一样。
这是一个过度简化的代码作为示例。这是它的行为和代码:
- 一个 for 列表在一个包含 3 个数字和 1 个字母的数组上进行迭代。
- 对于前 2 个数字,执行使用它们的命令并且量表增加 25%。
- 对于字母,命令将失败,我想显示一个
--msgbox
错误等待我按回车 - 对于最后一个数字,与其他 2 个数字的行为相同。
#!/bin/bash
array=("1" "2" "A" "3")
i=0
for element in "${array[@]}"; do
command $element #This command will fail with any non int value.
echo "XXX"
echo $(expr 100 / 4 \* $i)
echo ${array[$i]}
echo "XXX"
i=$((i+1))
sleep 1
done | whiptail --title "Gauge" --gauge "Wait" 10 80 0
我已经尝试过一些类似的东西command $element || whiptail --title "Exception" --msgbox "Error!" 10 80
。但是,由于消息框的鞭尾在仪表的循环中,因此输出被破坏。
问题可能来自我的设计?
谢谢您的帮助 :)