with -e, -u, and -o pipefail all on, should a reference to an unset variable
inside a read inside a while cause the whole script to exit?
it does if it happens inside a function, but not in "open code", i.e. at the
top level of the script.
is this intended?
$ cat ./fail
#!/usr/bin/env ksh
set -e
set -u
print ${.sh.version}
print '--- open code'
unset files
typeset -a files
set -o pipefail
ls | while read file
do
files[${#files[*]}]=$fil
done
set +o pipefail
print files:
typeset -p files
print '---'
print '--- with a function'
function foo
{
set -e
set -u
nameref a=$1
shift
typeset file
ls | while read file
do
a[${#a[*]}]=$fil
done
}
unset files
typeset -a files
foo files
print files:
typeset -p files
print '---'
$ ./fail
Version AJM 93u+ 2012-08-01
--- open code
./fail: line 14: fil: parameter not set
files:
typeset -a files
---
--- with a function
./fail[41]: foo: line 34: fil: parameter not set
$
--
Aaron Davies
[email protected]
_______________________________________________
ast-users mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-users