2005-12-07 14:08:12 +00:00
|
|
|
|
# bug in bash up to and including bash-3.0 (including patches)
|
|
|
|
|
#
|
|
|
|
|
# problem is conflict between CTLNUL used internally to denote quoted null
|
|
|
|
|
# characters and its value (0x7f) appearing in the expansion of a variable
|
|
|
|
|
#
|
|
|
|
|
unset x
|
|
|
|
|
recho "xxx${x}yyy"
|
|
|
|
|
|
|
|
|
|
y=$'\177'
|
|
|
|
|
recho "xxx${y}yyy"
|
|
|
|
|
|
|
|
|
|
unset y
|
|
|
|
|
|
|
|
|
|
unset undef
|
|
|
|
|
|
|
|
|
|
set ""
|
|
|
|
|
recho ${undef-"x$*y"}
|
|
|
|
|
|
|
|
|
|
set $'\177'
|
|
|
|
|
recho ${undef-"x$*y"}
|
|
|
|
|
|
|
|
|
|
shift $#
|
|
|
|
|
|
|
|
|
|
f()
|
|
|
|
|
{
|
|
|
|
|
recho "-${*-x}-"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
f ''
|
|
|
|
|
f $'\177'
|
|
|
|
|
|
|
|
|
|
unset -f f
|
|
|
|
|
|
|
|
|
|
x=12345
|
|
|
|
|
|
|
|
|
|
recho "${x:6:1}"
|
|
|
|
|
|
|
|
|
|
x=
|
|
|
|
|
recho "${x:0:1}"
|
|
|
|
|
|
|
|
|
|
y=$'\177'
|
|
|
|
|
recho "${y:0:1}"
|
|
|
|
|
|
|
|
|
|
y=xxx$'\177'yyy
|
|
|
|
|
recho "${y:3:3}"
|
|
|
|
|
|
|
|
|
|
unset x y
|
|
|
|
|
|
|
|
|
|
eval tmp=`printf "$'\\\\\x%x'\n" 127`
|
|
|
|
|
printf "%#1x\n" "'$tmp"
|
|
|
|
|
|
|
|
|
|
x=$'\177'
|
|
|
|
|
printf "%#1x\n" "'$x"
|
|
|
|
|
|
|
|
|
|
a=127
|
|
|
|
|
eval c=\$\'\\$(printf '%o' $a)\'
|
|
|
|
|
printf "%#1x\n" "'$c"
|
|
|
|
|
|
|
|
|
|
recho "$c"
|
|
|
|
|
recho "$c"@
|
|
|
|
|
recho @"$c"@
|
|
|
|
|
recho @"$c"
|
|
|
|
|
|
|
|
|
|
recho "$c"
|
|
|
|
|
recho "$c@"
|
|
|
|
|
recho "@$c@"
|
|
|
|
|
recho "@$c"
|
|
|
|
|
|
|
|
|
|
unset tmp x a c
|
|
|
|
|
|
|
|
|
|
qtest()
|
|
|
|
|
{
|
|
|
|
|
recho ${#q} "${q}" ${q}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
q=$'\x7f'
|
|
|
|
|
qtest
|
|
|
|
|
|
|
|
|
|
q=${q}a
|
|
|
|
|
qtest
|
|
|
|
|
|
|
|
|
|
q=$'\x7fa'
|
|
|
|
|
qtest
|
|
|
|
|
|
|
|
|
|
q="${q}a"
|
|
|
|
|
qtest
|
|
|
|
|
|
|
|
|
|
unset -f qtest
|
|
|
|
|
unset q
|
|
|
|
|
|
|
|
|
|
set -- ''
|
|
|
|
|
recho "${*:1}"
|
|
|
|
|
recho ${*:1}
|
|
|
|
|
recho -${*:1}-
|
|
|
|
|
recho -"${*:1}"-
|
|
|
|
|
|
|
|
|
|
set $'\177'
|
|
|
|
|
recho "${*:1}"
|
|
|
|
|
recho "-${*:1}-"
|
|
|
|
|
|
|
|
|
|
recho ${*:1}
|
|
|
|
|
recho -${*:1}-
|
|
|
|
|
|
|
|
|
|
shift $#
|
|
|
|
|
|
|
|
|
|
DEL=`awk 'END{printf("%c", 0+127)}' </dev/null`
|
|
|
|
|
T1=a\ $DEL
|
|
|
|
|
T2="a $DEL"
|
|
|
|
|
set -- x $(echo $T1|wc -c) $(echo $T2|wc -c); shift
|
|
|
|
|
L1=$1; L2=$2
|
|
|
|
|
case "$L1/$L2" in
|
|
|
|
|
4/4) echo ok;;
|
|
|
|
|
*) echo CTLNUL bug: L1=$L1, L2=$L2;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
x=$'\177'
|
|
|
|
|
recho "aaa${x}bbb"
|
|
|
|
|
recho ccc"${x}"ddd
|
|
|
|
|
recho eee"$x"fff
|
|
|
|
|
recho ggg"$(echo $x)"hhh
|
|
|
|
|
|
|
|
|
|
x=
|
|
|
|
|
recho "aaa${x}bbb"
|
|
|
|
|
recho ccc"${x}"ddd
|
|
|
|
|
recho eee"$x"fff
|
|
|
|
|
recho ggg"$(echo $x)"hhh
|
|
|
|
|
|
|
|
|
|
set -- $'\177'
|
|
|
|
|
recho "aaa${1}bbb"
|
|
|
|
|
recho ccc"${1}"ddd
|
|
|
|
|
recho eee"$1"fff
|
|
|
|
|
recho ggg"$(echo $1)"hhh
|
|
|
|
|
|
|
|
|
|
set -- ""
|
|
|
|
|
recho "aaa${1}bbb"
|
|
|
|
|
recho ccc"${1}"ddd
|
|
|
|
|
recho eee"$1"fff
|
|
|
|
|
recho ggg"$(echo $1)"hhh
|
|
|
|
|
|
|
|
|
|
recho aaa$'\177'bbb
|
|
|
|
|
recho ccc""ddd
|
|
|
|
|
recho "eeefff"
|
|
|
|
|
recho ggg"$(echo $'\177')"hhh
|
2014-02-26 09:36:43 -05:00
|
|
|
|
|
|
|
|
|
${THIS_SH} ./iquote1.sub
|