[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bash exit command should be unconditional
From: |
Bob Proulx |
Subject: |
Re: bash exit command should be unconditional |
Date: |
Wed, 7 Apr 2010 22:49:59 -0600 |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
Vadym Chepkov wrote:
> I found out a very unusual feature of bash which makes it to act
> really unexpected. I understand that pipelines are executed in a
> separate subshell, but I really think 'exit' command should be
> absolute. Consider a trivial code:
Note that dash also behaves this way too.
> #!/bin/bash
>
> echo Start
> ps -ef | while read proc
> do
> echo $proc
> exit 1
> done
> echo Continue
>
> I would expect never see "Continue" printed, I didn't put any
> conditional checks to simplify the example, but I really expect the
> script to be completely aborted when it gets to 'exit', not having
> to add additional checks or replace pipeline with temporary files
This is a variation on Bash FAQ E4. Pipes create subshells.
You can avoid this by avoiding piping to the while loop. Instead use
a redirection and no subshell will be created.
#!/bin/bash
echo Start
while read proc
do
echo $proc
exit 1
done < <(ps -ef)
echo Continue
The "<(command)" syntax is documented in the Process Substitution
section of the manual.
Bob
- bash exit command should be unconditional, Vadym Chepkov, 2010/04/07
- Re: bash exit command should be unconditional, Jan Schampera, 2010/04/08
- Re: bash exit command should be unconditional,
Bob Proulx <=
- Re: bash exit command should be unconditional, Roman Rakus, 2010/04/08
- Re: bash exit command should be unconditional, Vadym Chepkov, 2010/04/08
- Re: bash exit command should be unconditional, Greg Wooledge, 2010/04/08
- Re: bash exit command should be unconditional, Bob Proulx, 2010/04/08
- Re: bash exit command should be unconditional, Greg Wooledge, 2010/04/08
- Re: bash exit command should be unconditional, Bob Proulx, 2010/04/08