blob: 2b80d43ba6040f32ab1f93e705d4363a0e783299 [file] [log] [blame]
Bram Moolenaar1aa5f1c2023-06-22 21:57:51 +01001#!/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
12Variable1=${VariableA:-This is a Text}
13Variable2=${VariableA:=This is a Text}
14Variable3=${VariableA:?This is a Text}
15echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3"
16
17# Case 1b. Variable and Constant
18[ -t 0 ] && echo "\n`date`" && unset VariableA
19Variable1=${VariableA:-$HOME This is a Text}
20Variable2=${VariableA:=$HOME This is a Text}
21Variable3=${VariableA:?$HOME This is a Text}
22echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3"
23
24# Case 1c. Constant and Variable
25[ -t 0 ] && echo "\n`date`" && unset VariableA
26Variable1=${VariableA:-This is a Text in $HOME}
27Variable2=${VariableA:=This is a Text in $HOME}
28Variable3=${VariableA:+This is a Text in $HOME} #! :+ is bash-only, error here expected
29Variable1=${VariableA:-This is a Text in $HOME too}
30Variable2=${VariableA:=This is a Text in $HOME too}
31Variable3=${VariableA:+This is a Text in $HOME too}
32echo "$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
36Variable1=${VariableA:-$SHELL}
37Variable1=${VariableA:-$SHELL This is a Text in $HOME}
38Variable2=${VariableA:=$SHELL This is a Text in $HOME}
39Variable3=${VariableA:+$SHELL This is a Text in $HOME}
40echo "$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
44Variable1=${VariableA:-"This is a Text in $HOME $SHELL"}
45Variable1=${VariableA:-This is a Text in $HOME $SHELL}
46Variable2=${VariableA:=This is a Text in $HOME $SHELL}
47Variable3=${VariableA:+This is a Text in $HOME $SHELL}
48echo "$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#
70Variable4=${Variable4:?This is an Error Message}
71Variable4=${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
76exit $?
77
78# Michael Soulier
79if [ $# -ne 1 ]; then
80 echo whatever
81 exit 1
82fi