113de33a5SJulio Merinoset -e 213de33a5SJulio Merinotrap 'echo Broken pipe -- test failed' PIPE 313de33a5SJulio Merino 413de33a5SJulio MerinoP=${TMPDIR:-/tmp} 513de33a5SJulio Merinocd $P 613de33a5SJulio MerinoT=$(mktemp -d sh-test.XXXXXX) 713de33a5SJulio Merinocd $T 813de33a5SJulio Merino 913de33a5SJulio Merinomkfifo input output error 1013de33a5SJulio MerinoHISTFILE=/dev/null ${SH} +m -i <input >output 2>error & 1113de33a5SJulio Merinoexec 3>input 1213de33a5SJulio Merino{ 1313de33a5SJulio Merino # Command not found, containing slash 1413de33a5SJulio Merino echo '/var/empty/nonexistent' >&3 1513de33a5SJulio Merino # Read error message, shell will read new input now 1613de33a5SJulio Merino read dummy <&5 1713de33a5SJulio Merino # Execute bad command again 1813de33a5SJulio Merino echo 'fc -e true; echo continued' >&3 1913de33a5SJulio Merino read dummy <&5 2013de33a5SJulio Merino read line <&4 && [ "$line" = continued ] && : ${rc:=0} 2113de33a5SJulio Merino exec 3>&- 2213de33a5SJulio Merino # Old sh duplicates itself after the fc, producing another line 2313de33a5SJulio Merino # of output. 2413de33a5SJulio Merino if read line <&4; then 2513de33a5SJulio Merino echo "Extraneous output: $line" 2613de33a5SJulio Merino rc=1 2713de33a5SJulio Merino fi 2813de33a5SJulio Merino} 4<output 5<error 2913de33a5SJulio Merinoexec 3>&- 3013de33a5SJulio Merino 3113de33a5SJulio Merinorm input output error 3213de33a5SJulio Merinormdir ${P}/${T} 3313de33a5SJulio Merinoexit ${rc:-3} 34