Stupid shell tricks

D J Hawkey Jr hawkeyd at visi.com
Mon Jul 21 06:05:06 PDT 2003


I got it!

> I'll cut right to it: I'm looking for a technique to do "atomic writes"
> in a shell (sh(1)) script, playing with the trap builtin. It goes something
> like this:
> 
>      1: #!/bin/sh
>      2:
>      3: trapper ()
>      4: {
>      5:    rm -f $TMPFILE
>      6:    exit
>      7: }
>      8:
>      9: trap trapper HUP PIPE INT QUIT SEGV
>     10:
>     11: ...
>     12:
>     13: while read LINE; do
>     14:     trap "" HUP PIPE INT QUIT SEGV
>     15:     binary_that_writes $LINE
>     16:     ...
>     17: done <$TMPFILE
>     18:
>     19: trapper

I ditched line 14, and changed line 15 to:

    sh -c "trap \"\" HUP PIPE INT QUIT SEGV; binary_that_writes $LINE"

The explanation of "-T" in the man page gave me the clue.

Movin' right along,
Dave

-- 
  ______________________                         ______________________
  \__________________   \    D. J. HAWKEY JR.   /   __________________/
     \________________/\     hawkeyd at visi.com    /\________________/
                      http://www.visi.com/~hawkeyd/



More information about the freebsd-questions mailing list