对话框菜单的bash脚本退出代码 [英] bash script exit codes for dialog menu
本文介绍了对话框菜单的bash脚本退出代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个密码
menu "Pasirinkite:" 0 0 0 \
iraso_ivedimas "iraso irasymas i kontaktu knygele" \
iraso_pdialog --title "Meniu" \
--menu "Pasirinkite:" 0 0 0 \
iraso_ivedimas "iraso irasymas i kontaktu knygele" \
iraso_paieska "iraso paieska pagal varda" \
iraso_perziura "viso iraso perziura" \
iraso_salinimas "iraso salinimas pagal eiles numeri" 2>f.txt
kint=$?
case $kint in
0)p=`cat f.txt`
case $p in
iraso_ivedimas)dialog --inputbox "Iveskite varda" 0 0 2>kvardas.txt
vardp=`cat kvardas.txt`
dialog --inputbox "Iveskite pavarde" 0 0 2>kpavarde.txt
pavardp=`cat kpavarde.txt`
dialog --inputbox "Iveskite telefono numeri" 0 0 2>ktel.txt
telk=`cat ktel.txt`
dialog --inputbox "Iveskite el. pasta" 0 0 2>kpastas.txt
pastk=`cat kpastas.txt`
echo "$vardp $pavardp $telk $pastk" >> kontaktinf.txt
;;
iraso_paieska)dialog --inputbox "iveskite varda" 0 0 2>ieskvard.txt
survard=`cat ieskvard.txt`
if grep $survard kontaktinf.txt
then
grep $survard kontaktinf.txt >> svard.txt
ttss=`cat svard.txt`
dialog --msgbox "$ttss" 0 0
else
dialog --msgbox "nesurasta" 0 0
fi
;;
iraso_perziura)
n=`wc -l< kontaktinf.txt`
pps=`cat kontaktinf.txt`
if [ -s kontaktinf.txt ]
then
dialog --inputbox "iveskite eiles numeri" 0 0 2>eilnr.txt
eilesnr=`cat eilnr.txt`
sed -n "$eilesnr"'p' kontaktinf.txt > pta.txt
pts=`cat pta.txt`
dialog --yesno "ar tikrai norite salinti $pts" 0 0
kinn=$?
case $kinn in
0)sed -i "$eilesnr"'d' kontaktinf.txt;;
1)exit;;
255)exit;;
esac
else
echo "sarasas tuscias"
fi
esac;;
1)exit;;
255)exit;;
esac
rm -f kvardas.txt
rm -f kpavarde.txt
rm -f ktel.txt
rm -f kpastas.txt
rm -f eilnr.txt
rm -f svard.txt
rm -f pta.txt
有4个菜单点.iraso_ivedimas)iraso_paieska)iraso_perziura)iraso_salinimas).我的问题是,如何给他们1)退出;(取消按钮)255)退出;;(esc),因为当我尝试执行此操作时,如果我按esc或Cancel键,它将一直到达每个菜单点直到结束
there are 4 menu points. iraso_ivedimas) iraso_paieska) iraso_perziura) iraso_salinimas). My question is, how do I give them 1)exit;; (cancel button) 255)exit;; (esc), to each of them because when I try to do it, it just goes to every menu point till end if i press esc or cancel
推荐答案
使用对话框的非零退出代码作为用户中止.
少量样品
Use non-zero exit code of dialog as user abort.
Little sample
#!/bin/bash
die() {
echo >&2 "$0 ERROR: $@"
exit 1
}
userExit() {
die "User abort."
}
vardp=$(
dialog --inputbox "Iveskite varda" 0 0 2>&1 >/dev/tty
) || userExit
pavardp=$(dialog --inputbox "Iveskite pavarde" 0 0 2>&1 >/dev/tty) || userExit
telk=$(dialog --inputbox "Iveskite telefono numeri" 0 0 2>&1 >/dev/tty) || userExit
pastk=$(dialog --inputbox "Iveskite el. pasta" 0 0 2>&1 >/dev/tty) || userExit
# And so on...
printf "%-8s:%s\n" vardp "$vardp" pavardp "$pavardp" telk "$telk" pastk "$pastk"
这篇关于对话框菜单的bash脚本退出代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文