← Back to team overview

sslug-teknik team mailing list archive

Re: Jeg forstår ikke denne bash-script særhed

 

>  runtest $each | cat

> echo ""echo "Loopet uden pipe virker ikke"for each in "${INPUTS[@]}"do
> runtest $each

Årsagen er at getopts først "nulstiller" OPTIND (indekset) til 1 når man 
starter en ny shell. 

Det kan man se i "help getopts":
OPTIND is initialized to 1 each time the shell or
a shell script is invoked.

I "man bash" kan man se: 
Each command in a pipeline is executed as a separate process (i.e., in a 
subshell).

Så man får den samme reaktion ved at bruge subshell sådan:
(runtest $each)

En anden løsning er: 
OPTIND=1

inden man kalder getopts når den ikke kaldes i en subshell. 


Follow ups

References