blob: ccc497d7be1f116c5da9dd9de3276ac4a5c71a07 [file] [log] [blame]
# Builds a " 3>&- 4>&-" string.
# Note: one of these fds is a directory opened to /proc/self/fd
# for globbing. It is unwanted, but I don't know how to filter it out.
find_fds() {
fds=""
for f in /proc/self/fd/*; do
test "$f" = "/proc/self/fd/0" && continue
test "$f" = "/proc/self/fd/1" && continue
test "$f" = "/proc/self/fd/2" && continue
fds="$fds ${f##*/}>&-"
done
}
find_fds
fds1="$fds"
# One of the fds is open to the script body
# Close it while executing something.
eval "find_fds $fds"
# Shell should not lose that fd. Did it?
find_fds
test x"$fds1" = x"$fds" && { echo "Ok: script fd is not closed"; exit 0; }
echo "Bug: script fd is closed"
echo "fds1:$fds1"
echo "fds2:$fds"
exit 1