Thread (22 messages) flat view 22 messages, 9 authors, 2016-06-15

Re: How to get bash to shut up about SIGPIPE?

From: Rene Scharfe <hidden>
Date: 2016-06-15 22:41:55

On Fri, Apr 29, 2005 at 11:29:22PM -0700, Paul Jackson wrote:
Linus replied to pj:
quoted
quoted
Code Sample 2:
...
Didn't change anything for me. Same thing.
I don't believe you did what I did.

The source code for bash, both 2.x and 3.x versions, clearly displays a
simpler error message (no line number or redisplay of your script
commands) in the case that you set a trap.  And I tested both shells on
a multiprocessor, to verify that they behaved as I expected, running
these silly little scripts.
I don't have a multiprocessor and I see the same.  Are you sure it's SMP
dependant?

Your solution (trapping _inside_ the job, too) works for me, btw.  Here's
a patch for cg-log that reduces the clutter to two "Broken pipe" lines
(pun not intended).

Rene

--- cg-log~	2005-04-29 23:43:09.000000000 +0200
+++ cg-log	2005-04-30 12:15:40.000000000 +0200
@@ -16,6 +16,7 @@
 # or id1:id2 representing an (id1;id2] range of commits to show.
 
 . cg-Xlib
+trap exit SIGPIPE
 
 if [ "$1" = "-c" ]; then
 	shift
@@ -47,6 +48,7 @@
 fi
 
 $revls | $revsort | while read time commit parents; do
+	trap exit SIGPIPE
 	[ "$revfmt" = "rev-list" ] && commit="$time"
 	echo $colheader""commit ${commit%:*} $coldefault;
 	cat-file commit $commit | \
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help