|
Packit |
992a25 |
########################################################################
|
|
Packit |
992a25 |
# #
|
|
Packit |
992a25 |
# This software is part of the ast package #
|
|
Packit |
992a25 |
# Copyright (c) 1982-2012 AT&T Intellectual Property #
|
|
Packit |
992a25 |
# and is licensed under the #
|
|
Packit |
992a25 |
# Eclipse Public License, Version 1.0 #
|
|
Packit |
992a25 |
# by AT&T Intellectual Property #
|
|
Packit |
992a25 |
# #
|
|
Packit |
992a25 |
# A copy of the License is available at #
|
|
Packit |
992a25 |
# http://www.eclipse.org/org/documents/epl-v10.html #
|
|
Packit |
992a25 |
# (with md5 checksum b35adb5213ca9657e911e9befb180842) #
|
|
Packit |
992a25 |
# #
|
|
Packit |
992a25 |
# Information and Software Systems Research #
|
|
Packit |
992a25 |
# AT&T Research #
|
|
Packit |
992a25 |
# Florham Park NJ #
|
|
Packit |
992a25 |
# #
|
|
Packit |
992a25 |
# David Korn <dgk@research.att.com> #
|
|
Packit |
992a25 |
# #
|
|
Packit |
992a25 |
########################################################################
|
|
Packit |
992a25 |
function err_exit
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
print -u2 -n "\t"
|
|
Packit |
992a25 |
print -u2 -r ${Command}[$1]: "${@:2}"
|
|
Packit |
992a25 |
let Errors+=1
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
alias err_exit='err_exit $LINENO'
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
Command=${0##*/}
|
|
Packit |
992a25 |
integer Errors=0
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tmp=$(mktemp -dt) || { err_exit mktemp -dt failed; exit 1; }
|
|
Packit |
992a25 |
trap "cd /; rm -rf $tmp" EXIT
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
f=$tmp/here1
|
|
Packit |
992a25 |
g=$tmp/here2
|
|
Packit |
992a25 |
cat > $f <
|
|
Packit |
992a25 |
hello world
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
if [[ $(<$f) != 'hello world' ]]
|
|
Packit |
992a25 |
then err_exit "'hello world' here doc not working"
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
cat > $g <<\!
|
|
Packit |
992a25 |
hello world
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
cmp $f $g 2> /dev/null || err_exit "'hello world' quoted here doc not working"
|
|
Packit |
992a25 |
cat > $g <<- !
|
|
Packit |
992a25 |
hello world
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
cmp $f $g 2> /dev/null || err_exit "'hello world' tabbed here doc not working"
|
|
Packit |
992a25 |
cat > $g <<- \!
|
|
Packit |
992a25 |
hello world
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
cmp $f $g 2> /dev/null || err_exit "'hello world' quoted tabbed here doc not working"
|
|
Packit |
992a25 |
x=hello
|
|
Packit |
992a25 |
cat > $g <
|
|
Packit |
992a25 |
$x world
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
cmp $f $g 2> /dev/null || err_exit "'$x world' here doc not working"
|
|
Packit |
992a25 |
cat > $g <
|
|
Packit |
992a25 |
$(print hello) world
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
cmp $f $g 2> /dev/null || err_exit "'$(print hello) world' here doc not working"
|
|
Packit |
992a25 |
cat > $f <<\!!
|
|
Packit |
992a25 |
!@#$%%^^&*()_+~"::~;'`<>?/.,{}[]
|
|
Packit |
992a25 |
!!
|
|
Packit |
992a25 |
if [[ $(<$f) != '!@#$%%^^&*()_+~"::~;'\''`<>?/.,{}[]' ]]
|
|
Packit |
992a25 |
then err_exit "'hello world' here doc not working"
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
cat > $g <
|
|
Packit |
992a25 |
!@#\$%%^^&*()_+~"::~;'\`<>?/.,{}[]
|
|
Packit |
992a25 |
!!
|
|
Packit |
992a25 |
cmp $f $g 2> /dev/null || err_exit "unquoted here doc not working"
|
|
Packit |
992a25 |
exec 3<
|
|
Packit |
992a25 |
foo
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
if [[ $(<&3) != ' foo' ]]
|
|
Packit |
992a25 |
then err_exit "leading tabs stripped with <
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
$SHELL -c "
|
|
Packit |
992a25 |
eval `echo 'cat <
|
|
Packit |
992a25 |
cat > /dev/null <
|
|
Packit |
992a25 |
abc
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
cat >$g << :
|
|
Packit |
992a25 |
:
|
|
Packit |
992a25 |
:
|
|
Packit |
992a25 |
cmp /dev/null $g 2> /dev/null || err_exit "empty here doc not working"
|
|
Packit |
992a25 |
x=$(print $( cat <
|
|
Packit |
992a25 |
hello
|
|
Packit |
992a25 |
HUP
|
|
Packit |
992a25 |
)
|
|
Packit |
992a25 |
)
|
|
Packit |
992a25 |
if [[ $x != hello ]]
|
|
Packit |
992a25 |
then err_exit "here doc inside command sub not working"
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
y=$(cat <
|
|
Packit |
992a25 |
${x:+${x}}
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
)
|
|
Packit |
992a25 |
if [[ $y != "${x:+${x}}" ]]
|
|
Packit |
992a25 |
then err_exit '${x:+${x}} not working in here document'
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
$SHELL -c '
|
|
Packit |
992a25 |
x=0
|
|
Packit |
992a25 |
while (( x < 100 ))
|
|
Packit |
992a25 |
do ((x = x+1))
|
|
Packit |
992a25 |
cat << EOF
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
done
|
|
Packit |
992a25 |
' 2> /dev/null || err_exit '100 empty here docs fails'
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
print 'builtin -d cat
|
|
Packit |
992a25 |
cat <<- EOF'
|
|
Packit |
992a25 |
for ((i=0; i < 100; i++))
|
|
Packit |
992a25 |
do print XXXXXXXXXXXXXXXXXXXX
|
|
Packit |
992a25 |
done
|
|
Packit |
992a25 |
print ' XXX$(date)XXXX
|
|
Packit |
992a25 |
EOF'
|
|
Packit |
992a25 |
} > $f
|
|
Packit |
992a25 |
chmod +x "$f"
|
|
Packit |
992a25 |
$SHELL "$f" > /dev/null || err_exit "large here-doc with command substitution fails"
|
|
Packit |
992a25 |
x=$(/bin/cat <
|
|
Packit |
992a25 |
$0
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
)
|
|
Packit |
992a25 |
[[ "$x" == "$0" ]] || err_exit '$0 not correct inside here documents'
|
|
Packit |
992a25 |
$SHELL -c 'x=$(
|
|
Packit |
992a25 |
cat << EOF
|
|
Packit |
992a25 |
EOF)' 2> /dev/null || err_exit 'here-doc cannot be terminated by )'
|
|
Packit |
992a25 |
if [[ $( IFS=:;cat <<-!
|
|
Packit |
992a25 |
$IFS$(print hi)$IFS
|
|
Packit |
992a25 |
!) != :hi: ]]
|
|
Packit |
992a25 |
then err_exit '$IFS unset by command substitution in here docs'
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
if x=$($SHELL -c 'cat <<< "hello world"' 2> /dev/null)
|
|
Packit |
992a25 |
then [[ $x == 'hello world' ]] || err_exit '<<< documents not working'
|
|
Packit |
992a25 |
x=$($SHELL -c 'v="hello world";cat <<< $v' 2> /dev/null)
|
|
Packit |
992a25 |
[[ $x == 'hello world' ]] || err_exit '<<< documents with $x not working'
|
|
Packit |
992a25 |
x=$($SHELL -c 'v="hello world";cat <<< "$v"' 2> /dev/null)
|
|
Packit |
992a25 |
[[ $x == 'hello world' ]] || err_exit '<<< documents with $x not working'
|
|
Packit |
992a25 |
else err_exit '<<< syntax not supported'
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
if [[ $(cat << EOF #testing
|
|
Packit |
992a25 |
#abc
|
|
Packit |
992a25 |
abc
|
|
Packit |
992a25 |
EOF) != $'#abc\nabc' ]]
|
|
Packit |
992a25 |
then err_exit 'comments not preserved in here-documents'
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
cat > "$f" <<- '!!!!'
|
|
Packit |
992a25 |
builtin cat
|
|
Packit |
992a25 |
: << EOF
|
|
Packit |
992a25 |
$PWD
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
command exec 3>&- 4>&- 5>&- 6>&- 7>&- 8>&- 9>&-
|
|
Packit |
992a25 |
x=abc
|
|
Packit |
992a25 |
cat << EOF
|
|
Packit |
992a25 |
$x
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
!!!!
|
|
Packit |
992a25 |
chmod 755 "$f"
|
|
Packit |
992a25 |
if [[ $($SHELL "$f") != abc ]]
|
|
Packit |
992a25 |
then err_exit 'here document descritor was closed'
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
cat > "$f" <<- '!!!!'
|
|
Packit |
992a25 |
exec 0<&-
|
|
Packit |
992a25 |
foobar()
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
/bin/cat <<- !
|
|
Packit |
992a25 |
foobar
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
: << EOF
|
|
Packit |
992a25 |
$PWD
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
print -r -- "$(foobar)"
|
|
Packit |
992a25 |
!!!!
|
|
Packit |
992a25 |
if [[ $($SHELL "$f") != foobar ]]
|
|
Packit |
992a25 |
then err_exit 'here document with stdin closed failed'
|
|
Packit |
992a25 |
fi
|
|
Packit |
992a25 |
printf $'cat <<# \\!!!\n\thello\n\t\tworld\n!!!' > $f
|
|
Packit |
992a25 |
[[ $($SHELL "$f") == $'hello\n\tworld' ]] || err_exit "<<# not working for quoted here documents"
|
|
Packit |
992a25 |
printf $'w=world;cat <<# !!!\n\thello\n\t\t$w\n!!!' > $f
|
|
Packit |
992a25 |
[[ $($SHELL "$f") == $'hello\n\tworld' ]] || err_exit "<<# not working for non-quoted here documents"
|
|
Packit |
992a25 |
[[ $( $SHELL <<- \++++
|
|
Packit |
992a25 |
S=( typeset a )
|
|
Packit |
992a25 |
function S.a.get
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
.sh.value=$__a
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
__a=1234
|
|
Packit |
992a25 |
cat <<-EOF
|
|
Packit |
992a25 |
${S.a}
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
++++
|
|
Packit |
992a25 |
) == 1234 ]] 2> /dev/null || err_exit 'here document with get discipline failed'
|
|
Packit |
992a25 |
[[ $($SHELL -c 'g(){ print ok;}; cat <<- EOF
|
|
Packit |
992a25 |
${ g;}
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
' 2> /dev/null) == ok ]] || err_exit '${ command;} not working in heredoc'
|
|
Packit |
992a25 |
script=$f
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
for ((i=0; i < 406; i++))
|
|
Packit |
992a25 |
do print ': 23456789012345678'
|
|
Packit |
992a25 |
done
|
|
Packit |
992a25 |
print : 123456789123
|
|
Packit |
992a25 |
cat <<- \EOF
|
|
Packit |
992a25 |
eval "$(
|
|
Packit |
992a25 |
{ cat ; } <
|
|
Packit |
992a25 |
print hello
|
|
Packit |
992a25 |
MARKER
|
|
Packit |
992a25 |
)"
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
} > $script
|
|
Packit |
992a25 |
chmod +x $script
|
|
Packit |
992a25 |
[[ $($SHELL $script) == hello ]] 2> /dev/null || err_exit 'heredoc embeded in command substitution fails at buffer boundary'
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
got=$( cat << EOF
|
|
Packit |
992a25 |
\
|
|
Packit |
992a25 |
abc
|
|
Packit |
992a25 |
EOF)
|
|
Packit |
992a25 |
[[ $got == abc ]] || err_exit 'line continuation at start of buffer not working'
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
tmpfile1=$tmp/file1
|
|
Packit |
992a25 |
tmpfile2=$tmp/file2
|
|
Packit |
992a25 |
function gendata
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
typeset -RZ3 i
|
|
Packit |
992a25 |
for ((i=0; i < 500; i++))
|
|
Packit |
992a25 |
do print -r -- "=====================This is line $i============="
|
|
Packit |
992a25 |
done
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
cat > $tmpfile1 <<- +++
|
|
Packit |
992a25 |
function foobar
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
cat << XXX
|
|
Packit |
992a25 |
$(gendata)
|
|
Packit |
992a25 |
XXX
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
cat > $tmpfile2 <<- EOF
|
|
Packit |
992a25 |
\$(foobar)
|
|
Packit |
992a25 |
$(gendata)
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
+++
|
|
Packit |
992a25 |
chmod +x $tmpfile1
|
|
Packit |
992a25 |
$SHELL $tmpfile1
|
|
Packit |
992a25 |
set -- $(wc < $tmpfile2)
|
|
Packit |
992a25 |
(( $1 == 1000 )) || err_exit "heredoc $1 lines, should be 1000 lines"
|
|
Packit |
992a25 |
(( $2 == 4000 )) || err_exit "heredoc $2 words, should be 4000 words"
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
# comment with here document looses line number count
|
|
Packit |
992a25 |
integer line=$((LINENO+5))
|
|
Packit |
992a25 |
function tst
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
[[ $1 == $2 ]] || echo expected $1, got $2
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
tst $line $LINENO <<"!" # this comment affects LINENO #
|
|
Packit |
992a25 |
1
|
|
Packit |
992a25 |
!
|
|
Packit |
992a25 |
(( (line+=3) == LINENO )) || err_exit "line number=$LINENO should be $line"
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
[[ $($SHELL -c 'wc -c <<< ""' 2> /dev/null) == *1 ]] || err_exit '<<< with empty string not working'
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
mkdir $tmp/functions
|
|
Packit |
992a25 |
cat > $tmp/functions/t2 <<\!!!
|
|
Packit |
992a25 |
function t2
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
cat <
|
|
Packit |
992a25 |
${1}
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
!!!
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
FPATH=$tmp/functions
|
|
Packit |
992a25 |
foo=${
|
|
Packit |
992a25 |
cat <
|
|
Packit |
992a25 |
1 34567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111111
|
|
Packit |
992a25 |
111111111111111111111111111111111111111111111111111111111111 1
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
2 34567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222222
|
|
Packit |
992a25 |
222222222222222222222222222222222222222222222222222222222222 2
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
3 34567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333333
|
|
Packit |
992a25 |
333333333333333333333333333333333333333333333333333333333333 3
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
4 34567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444444
|
|
Packit |
992a25 |
444444444444444444444444444444444444444444444444444444444444 4
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
5 34567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555555
|
|
Packit |
992a25 |
555555555555555555555555555555555555555555555555555555555555 5
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
6 34567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666666
|
|
Packit |
992a25 |
666666666666666666666666666666666666666666666666666666666666 6
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
7 34567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777777
|
|
Packit |
992a25 |
777777777777777777777777777777777777777777777777777777777777 7
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
8 34567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888888
|
|
Packit |
992a25 |
888888888888888888888888888888888888888888888888888888888888 8
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
9 34567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999999
|
|
Packit |
992a25 |
999999999999999999999999999999999999999999999999999999999999 9
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
10 4567890 $(t2 1234567890 ) 0123456789012345678901234567890123
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
101010101010101010101010101010101010101010101010101010101010103
|
|
Packit |
992a25 |
1010101010101010101010101010101010101010101010101010101010 END
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
EOF
|
|
Packit |
992a25 |
}
|
|
Packit |
992a25 |
[[ ${#foo} == 10238 ]] || err_exit 'large here docs containing command subs of dynamically loaded functions fails'
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
{
|
|
Packit |
992a25 |
print $'FOO=1\nBAR=foobarbaz'
|
|
Packit |
992a25 |
print -- 'cat <<#EOF'
|
|
Packit |
992a25 |
integer i
|
|
Packit |
992a25 |
for ((i=0; i < 50000; i++))
|
|
Packit |
992a25 |
do print -r -- ' $(($FOO + 1))'
|
|
Packit |
992a25 |
print -r -- ' $BAR meep'
|
|
Packit |
992a25 |
done
|
|
Packit |
992a25 |
print EOF
|
|
Packit |
992a25 |
} > $f
|
|
Packit |
992a25 |
$SHELL $f > $g
|
|
Packit |
992a25 |
[[ $(grep meep $g | grep -v foobar) != '' ]] && err_exit 'here-doc loosing $var expansions on boundaries in rare cases'
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
print foo > $tmp/foofile
|
|
Packit |
992a25 |
x=$( $SHELL 2> /dev/null 'read <<< $(<'"$tmp"'/foofile) 2> /dev/null;print -r "$REPLY"')
|
|
Packit |
992a25 |
[[ $x == foo ]] || err_exit '<<< $(
|
|
Packit |
992a25 |
|
|
Packit |
992a25 |
exit $((Errors<125?Errors:125))
|