Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > gnu.bash.bug > #16161
| Path | csiph.com!xmission!news.snarked.org!news.linkpendium.com!news.linkpendium.com!panix!usenet.stanford.edu!not-for-mail |
|---|---|
| From | gentoo_eshoes@tutanota.com |
| Newsgroups | gnu.bash.bug |
| Subject | Re: looking for consistent C-c trap behavior |
| Date | Sat, 18 Apr 2020 00:00:59 +0200 (CEST) |
| Lines | 95 |
| Approved | bug-bash@gnu.org |
| Message-ID | <mailman.551.1587160875.3066.bug-bash@gnu.org> (permalink) |
| References | <M58iOBd--3-2@tutanota.com> <CAOSMAuuow0=Q7dzYyw3DnYduX79+Cqcc1jyb6q3KZK+z3ofzpg@mail.gmail.com> <M58lP4X--3-2@tutanota.com> <M599AxG--3-2@tutanota.com> |
| NNTP-Posting-Host | lists.gnu.org |
| Mime-Version | 1.0 |
| Content-Type | multipart/mixed; boundary="----=_Part_74623_2130888941.1587160859300" |
| X-Trace | usenet.stanford.edu 1587160875 19869 209.51.188.17 (17 Apr 2020 22:01:15 GMT) |
| X-Complaints-To | action@cs.stanford.edu |
| Cc | bug-bash <bug-bash@gnu.org> |
| To | Eduardo Bustamante <dualbus@gmail.com> |
| Envelope-to | bug-bash@gnu.org |
| DKIM-Signature | v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1587160859; s=s1; d=tutanota.com; h=From:From:To:To:Subject:Subject:Content-Description:Content-ID:Content-Type:Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:In-Reply-To:In-Reply-To:MIME-Version:MIME-Version:Message-ID:Message-ID:Reply-To:References:References:Sender; bh=oQn+lmkEXzhFDzZ44W6E57upQoP+Iib9cCPzqeJLXc0=; b=xUvRQhpaAvvkw6ZHLY6qmyNbyIBlzihcbHolIZeNPQ3gg6DyGSwUMDBy8U15tugG eMcuRBF19XuYxZTDyq0idNmEsS/Z5uhbAqS2u1DnLZLo3zUPXTPZEB52SFxJWOHJLjQ JBMoI/OQZrj5f8cCywax86Po/L7GMa52PzPoeXOCKtELySwcvPt/N4DuVxhHb4+li2H vtrpkn/STI5RyQFPZqix0hyW//+5niftQTLlfgDQPcg9B5IuxExOUZ7q72AaKP2cwl9 ND+/YwGhs/r8Inl4akrbehFEs5vSPscTS4OE/q/FxHqWrBf/grcgMM+893kLvZpvguE i55al6+q9g== |
| In-Reply-To | <M58lP4X--3-2@tutanota.com> |
| X-detected-operating-system | by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] |
| X-Received-From | 81.3.6.162 |
| X-BeenThere | bug-bash@gnu.org |
| X-Mailman-Version | 2.1.23 |
| Precedence | list |
| List-Id | Bug reports for the GNU Bourne Again SHell <bug-bash.gnu.org> |
| List-Unsubscribe | <https://lists.gnu.org/mailman/options/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=unsubscribe> |
| List-Archive | <https://lists.gnu.org/archive/html/bug-bash> |
| List-Post | <mailto:bug-bash@gnu.org> |
| List-Help | <mailto:bug-bash-request@gnu.org?subject=help> |
| List-Subscribe | <https://lists.gnu.org/mailman/listinfo/bug-bash>, <mailto:bug-bash-request@gnu.org?subject=subscribe> |
| X-Mailman-Original-Message-ID | <M599AxG--3-2@tutanota.com> |
| X-Mailman-Original-References | <M58iOBd--3-2@tutanota.com> <CAOSMAuuow0=Q7dzYyw3DnYduX79+Cqcc1jyb6q3KZK+z3ofzpg@mail.gmail.com> <M58lP4X--3-2@tutanota.com> |
| Xref | csiph.com gnu.bash.bug:16161 |
Show key headers only | View raw
[Multipart message — attachments visible in raw view] - view raw
Apr 17, 2020, 22:14 by gentoo_eshoes@tutanota.com:
>
>
>
> Apr 17, 2020, 22:02 by dualbus@gmail.com:
>
>> On Fri, Apr 17, 2020 at 12:59 PM gentoo_eshoes--- via Bug reports for
>> the GNU Bourne Again SHell <bug-bash@gnu.org> wrote:
>>
>>>
>>> I've noticed that if I trap SIGINT in a bash script, the behavior when encountering C-c depends on whether an external command (eg. 'sleep 100') or a builtin command (like 'read -p') was encountered.
>>>
>>> I attach an example script which requires me to press C-c twice to interrupt the builtin 'read -p' command, and it only works because I'm restoring the trap via 'trap - SIGINT' the first time.
>>>
>>> My goal is to have C-c interrupt and use that exit code (130 most likely) to exit with from script, regardless or whether or not the interrupted command in the script was an internal or external one.
>>>
>>> How to do?
>>>
Let me put some effort into it: (attached anew script, prev. was had extra 'sleep 100' which was supposed to be commented out)
To break from the builtin 'read', I have to use C-c twice: the first time I restore SIGINT trap so that the second C-c can actually make 'read' break/exit
$ ./sigintread.bash
Press C-c here...^Cinterrupted sees exit code '0'
^C
Maybe I should paste it rather than attach it, here:
#!/bin/bash
#C-c won't break the builtin read unless default SIGINT trap is restored, thus needing two C-c to exit
interrupted() {
local ec="$?"
trap - SIGINT #this restores prev. behaviour, so now another C-c will stop 'read -rp'
echo "interrupted sees exit code '$ec'"
# exit "$ec" #this is needed ONLY for when 'sleep' is used and interrupted, or else it will continue running and hit 'Normal exit', if used with 'read' then it will exit without breaking 'read' thus exit code is 0 instead of 130 (128+2 aka SIGINT==2)
}
trap interrupted SIGINT
builtin read -rp "Press C-c here..." #can use 'sleep 100' instead of this 'read...' here, for testing how the behaviour is different with an external command instead of a builtin one.
#sleep 100
#ping 127.0.0.1 #ping will ec=0 on C-c
ec="$?"
echo
echo "Normal exit sees ec=$ec"
exit "$ec"
Back to gnu.bash.bug | Previous | Next | Find similar
Re: looking for consistent C-c trap behavior gentoo_eshoes@tutanota.com - 2020-04-18 00:00 +0200
csiph-web