| # first try some invalid patterns |
| # do all of these in subshells since it's supposed to error out |
| export var=0123456789 |
| "$THIS_SH" -c 'echo ${:}' |
| "$THIS_SH" -c 'echo ${::}' |
| "$THIS_SH" -c 'echo ${:1}' |
| "$THIS_SH" -c 'echo ${::1}' |
| |
| #this also is not valid in bash, but we accept it: |
| "$THIS_SH" -c 'echo ${var:}' |
| |
| # then some funky ones |
| # UNFIXED BUG: this should work: "$THIS_SH" -c 'echo ${?:0}' |
| |
| # now some valid ones |
| set --; echo "1 =|${1}|" |
| set --; echo "1:1 =|${1:1}|" |
| set --; echo "1:1:2=|${1:1:2}|" |
| set --; echo "1::2 =|${1::2}|" |
| set --; echo "1:1: =|${1:1:}|" |
| set --; echo "1:: =|${1::}|" |
| |
| set -- 0123; echo "1 =|${1}|" |
| set -- 0123; echo "1:1 =|${1:1}|" |
| set -- 0123; echo "1:1:2=|${1:1:2}|" |
| set -- 0123; echo "1::2 =|${1::2}|" |
| set -- 0123; echo "1:1: =|${1:1:}|" |
| set -- 0123; echo "1:: =|${1::}|" |
| |
| unset f; echo "f =|$f|" |
| unset f; echo "f:1 =|${f:1}|" |
| unset f; echo "f:1:2=|${f:1:2}|" |
| unset f; echo "f::2 =|${f::2}|" |
| unset f; echo "f:1: =|${f:1:}|" |
| unset f; echo "f:: =|${f::}|" |
| |
| f=; echo "f =|$f|" |
| f=; echo "f:1 =|${f:1}|" |
| f=; echo "f:1:2=|${f:1:2}|" |
| f=; echo "f::2 =|${f::2}|" |
| f=; echo "f:1: =|${f:1:}|" |
| f=; echo "f:: =|${f::}|" |
| |
| f=a; echo "f =|$f|" |
| f=a; echo "f:1 =|${f:1}|" |
| f=a; echo "f:1:2=|${f:1:2}|" |
| f=a; echo "f::2 =|${f::2}|" |
| f=a; echo "f:1: =|${f:1:}|" |
| f=a; echo "f:: =|${f::}|" |
| |
| f=0123456789; echo "f =|$f|" |
| f=0123456789; echo "f:1 =|${f:1}|" |
| f=0123456789; echo "f:1:2=|${f:1:2}|" |
| f=0123456789; echo "f::2 =|${f::2}|" |
| f=0123456789; echo "f:1: =|${f:1:}|" |
| f=0123456789; echo "f:: =|${f::}|" |
| |
| echo "Substrings from special vars" |
| echo '? '"=|$?|" |
| echo '?:1 '"=|${?:1}|" |
| echo '?:1:2'"=|${?:1:2}|" |
| echo '?::2 '"=|${?::2}|" |
| echo '?:1: '"=|${?:1:}|" |
| echo '?:: '"=|${?::}|" |
| set -- 1 2 3 4 5 6 7 8 9 10 11 |
| echo '# '"=|$#|" |
| echo '#:1 '"=|${#:1}|" |
| echo '#:1:2'"=|${#:1:2}|" |
| echo '#::2 '"=|${#::2}|" |
| echo '#:1: '"=|${#:1:}|" |
| echo '#:: '"=|${#::}|" |
| |
| echo "Substrings with expressions" |
| f=01234567; echo 'f '"=|$f|" |
| f=01234567; echo 'f:1+1:2+2 '"=|${f:1+1:2+2}|" |
| f=01234567; echo 'f:-1:2+2 '"=|${f:-1:2+2}|" |
| f=01234567; echo 'f:1:f '"=|${f:1:f}|" |
| f=01234567; echo 'f:1:$f '"=|${f:1:$f}|" |
| f=01234567; echo 'f:1:${f} '"=|${f:1:${f}}|" |
| f=01234567; echo 'f:1:${f:3:1} '"=|${f:1:${f:3:1}}|" |
| f=01234567; echo 'f:1:1`echo 1`'"=|${f:1:`echo 1`}|" |
| |
| echo Done |