Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!zaphod.mps.ohio-state.edu!think.com!linus!nixbur!nixpbe!netmuc!net7!bothe From: bothe@net7.uucp Newsgroups: comp.unix.shell Subject: bourne sh, problems with var setting in case/esac Keywords: sh, case Message-ID: <1236@netmuc.UUCP> Date: 14 Nov 90 19:43:40 GMT Sender: bnews@netmuc.UUCP Distribution: comp Lines: 42 in sh, case does not save vars correct (i think) such a script shtest: #==== start script shtest ===== echo "1=$1, 2=$2, #=$#" case $1 in -d) shift echo "1=$1, 2=$2, #=$#" b="$1 x" echo ++++++++++++++++ $b esac | cat echo ++++++++++++++++ $b echo "1=$1, 2=$2, #=$#" #==== end script shtest ===== called with: shtest -d affe results: | remarks: _________________________ | _____________________ 1=-d, 2=affe, #=2 | orig params, ok 1=affe, 2=, #=1 | ok, params shifted ++++++++++++++++ affe x | ok ++++++++++++++++ | oops, where is content of b ? 1=-d, 2=affe, #=2 | hey, hu, what is going on with shift ? i did expect only 1 parameter ($1=affe) after esac, and var b set as in case ! is it a bug or a feature if i don't pipe esac and not use cat, all is ok, but i want to pipe ! what to do ? S I E M E N S Richard Bothe, NIXDORF COMPUTER AG, Dep PDT-M 24 ------------- Berliner Str. 95, W-8000 Munic (West Germany) N I X D O R F Tel.: +49 89 3601 2956, USA: bothe.muc@nixdorf.com (SNI) !USA: bothe.muc@nixdorf.de, NERV: bothe.muc