对话框菜单的bash脚本退出代码 [英] bash script exit codes for dialog menu

查看:53
本文介绍了对话框菜单的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆