[linux] probleem met bash exit door subshell?

Paul de Vries paul.de.vries op xs4all.nl
Wo Jun 22 16:15:23 CEST 2016


> het volgende bash script is mijn probleem tot de essentie teruggebracht:

$ cat ./mytest
#!/bin/bash -x

f1() {
  {
    ps $$
    echo before f1 exit
    exit 1
    echo after f1 exit
  } 2>&1 | tee f1.log
}
f2() {
# {
    ps $$
    echo before f2 exit
    exit 2
    echo after f2 exit
# } 2>&1 | tee f2.log
}

echo main before fx
if [ "$1" = 'f1' ]; then $1 && shift; fi
if [ "$1" = 'f2' ]; then $1 && shift; fi
echo main after fx

exit 0

> ik wil een lange serie van functies in volgorde uitvoeren, en van elke tussenstap een log bewaren.
> maar als er ergens iets fout gaat moet het geheel stoppen.

$ ./mytest f1 f2
+ echo main before fx
main before fx
+ '[' f1 = f1 ']'
+ f1
+ tee f1.log
+ ps 63192
  PID   TT  STAT      TIME COMMAND
63192 s002  S+     0:00.01 /bin/bash -x ./mytest f1 f2
+ echo before f1 exit
before f1 exit
+ exit 1
+ shift
+ '[' f2 = f2 ']'
+ f2
+ ps 63192
  PID   TT  STAT      TIME COMMAND
63192 s002  S+     0:00.01 /bin/bash -x ./mytest f1 f2
+ echo before f2 exit
before f2 exit
+ exit 2

> f1 exit stopt niet, maar ik denk dat ‘tee’ in een subhell draait, niet exit.
> heeft iemand hiervoor een suggestie?

dank,
paul de vries.



More information about the Linux mailing list