On Tue, Feb 26, 2013 at 3:03 AM, Linda Walsh <b...@tlinx.org> wrote: > My login shell is /bin/bash (i.e. not /bin/sh); SHELL=/bin/bash as well. > Typing 'which bash' gives /bin/bash, and whence bash: bash is /bin/bash. > > I had the foll0wing script which acts differently based on > whether or not it has a #!/bin/bash at the top: (i.e., as it is > displayed below, it fails; one need remove the [] from the first > line for it to work. > ================ > #[!/bin/bash] > while read fn;do > base=${fn%.*} > if [[ -e $base ]]; then > if [[ $base -ot $fn ]]; then echo "compressed version ($fn) seems newer" > elif [[ $base -nt $fn ]]; then echo "uncompressed version ($base) > seem newer" > else echo "both versions ($base) are same age" > fi > else > echo "No uncompressed version of $base exists" > fi > done < <(find . -type f -name \*.[0-9].\*[zZ]\* ) > ------------- > The error: > ./manscan.sh: line 12: syntax error near unexpected token `<' > ./manscan.sh: line 12: `done < <(find . -type f -name \*.[0-9].\*[zZ]\* )' > > Why would this script behave differently if the first line > exists or not? (Putting the !shell in square brackets, > made it a comment, not an interpreter spec, thus the same > effect as if it wasn't there ('cept the line number of the error is 1 > less if you don't have the line! ;-)). > > So...is this correct behavior for some[inane POSIX] reason? > Seems a bit odd to me. >
I don't seem to be able to reproduce it with my default configuration. However I can reproduce it by setting (but not exporting) POSIXLY_CORRECT