Bram Moolenaar | 1aa5f1c | 2023-06-22 21:57:51 +0100 | [diff] [blame^] | 1 | #!/bin/ksh -p |
| 2 | |
| 3 | # Note that this is special test file for ksh. sh is an extra file. |
| 4 | # Note too, that this file contains ONLY things which works for ksh BUT NOT |
| 5 | # for sh |
| 6 | |
| 7 | # This all should be OK |
| 8 | |
| 9 | # Several keywords without any quotes! |
| 10 | # Case 1a. Several Constants |
| 11 | [ -t 0 ] && date |
| 12 | Variable1=${VariableA:-This is a Text} |
| 13 | Variable2=${VariableA:=This is a Text} |
| 14 | Variable3=${VariableA:?This is a Text} |
| 15 | echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3" |
| 16 | |
| 17 | # Case 1b. Variable and Constant |
| 18 | [ -t 0 ] && echo "\n`date`" && unset VariableA |
| 19 | Variable1=${VariableA:-$HOME This is a Text} |
| 20 | Variable2=${VariableA:=$HOME This is a Text} |
| 21 | Variable3=${VariableA:?$HOME This is a Text} |
| 22 | echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3" |
| 23 | |
| 24 | # Case 1c. Constant and Variable |
| 25 | [ -t 0 ] && echo "\n`date`" && unset VariableA |
| 26 | Variable1=${VariableA:-This is a Text in $HOME} |
| 27 | Variable2=${VariableA:=This is a Text in $HOME} |
| 28 | Variable3=${VariableA:+This is a Text in $HOME} #! :+ is bash-only, error here expected |
| 29 | Variable1=${VariableA:-This is a Text in $HOME too} |
| 30 | Variable2=${VariableA:=This is a Text in $HOME too} |
| 31 | Variable3=${VariableA:+This is a Text in $HOME too} |
| 32 | echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3" |
| 33 | |
| 34 | # Case 1d. More Variables and Constants. Starting with a Variable. |
| 35 | [ -t 0 ] && echo "\n`date`" && unset VariableA |
| 36 | Variable1=${VariableA:-$SHELL} |
| 37 | Variable1=${VariableA:-$SHELL This is a Text in $HOME} |
| 38 | Variable2=${VariableA:=$SHELL This is a Text in $HOME} |
| 39 | Variable3=${VariableA:+$SHELL This is a Text in $HOME} |
| 40 | echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3" |
| 41 | |
| 42 | # Case 1e. More Constants and Variables. Starting with a Constant. |
| 43 | [ -t 0 ] && echo "\n`date`" && unset VariableA |
| 44 | Variable1=${VariableA:-"This is a Text in $HOME $SHELL"} |
| 45 | Variable1=${VariableA:-This is a Text in $HOME $SHELL} |
| 46 | Variable2=${VariableA:=This is a Text in $HOME $SHELL} |
| 47 | Variable3=${VariableA:+This is a Text in $HOME $SHELL} |
| 48 | echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3" |
| 49 | |
| 50 | # Case 1x. The same with ':' |
| 51 | [ -t 0 ] && echo "\n`date`" && unset VariableA |
| 52 | : ${VariableA:-This is a Text} |
| 53 | : ${VariableA:-$HOME This is a Text} |
| 54 | : ${VariableA:-This is a Text in $HOME} |
| 55 | : ${VariableA:-$SHELL This is a Text in $HOME} |
| 56 | : ${VariableA:-This is a Text in $HOME $SHELL} |
| 57 | |
| 58 | # Case 1y. The same with ':' and without the ':' in the parameter substitution |
| 59 | [ -t 0 ] && echo "\n`date`" && unset VariableA |
| 60 | : ${VariableA-This is a Text} |
| 61 | : ${VariableA-$HOME This is a Text} |
| 62 | : ${VariableA-This is a Text in $HOME} |
| 63 | : ${VariableA-$SHELL This is a Text in $HOME} |
| 64 | : ${VariableA-This is a Text in $HOME $SHELL} |
| 65 | |
| 66 | ################################################################################ |
| 67 | # |
| 68 | # This are valid usages for ${Var:?} in ksh! |
| 69 | # |
| 70 | Variable4=${Variable4:?This is an Error Message} |
| 71 | Variable4=${Variable4:?This is an Error Message from `date`} |
| 72 | |
| 73 | : ${Variable4:?This is an Error Message} |
| 74 | : ${Variable4:?This is an Error Message from `date`} |
| 75 | |
| 76 | exit $? |
| 77 | |
| 78 | # Michael Soulier |
| 79 | if [ $# -ne 1 ]; then |
| 80 | echo whatever |
| 81 | exit 1 |
| 82 | fi |