[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