0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

patch 9.0.1647: insufficient testing for syntax plugins

Problem:    Insufficient testing for syntax plugins.
Solution:   Add shell file examples. (Charles Campbell)  Create a messages
            file for easier debugging and reporting the test results.
This commit is contained in:
Bram Moolenaar
2023-06-22 21:57:51 +01:00
parent 982ded68b6
commit 1aa5f1c21f
64 changed files with 1886 additions and 27 deletions

View File

@@ -0,0 +1,4 @@
#! /bin/sh
export `echo 'A=B'`
printenv A
echo a `#foo` b

View File

@@ -0,0 +1,30 @@
#! /bin/ksh
# sh2
# Jul 28, 2018: introduced shCommandSubBQ, which is *not* included in a shSubCommandList (so its not recursive)
ccc=`echo "test"`
ccc=`echo "test"`
# comment
case $VAR in
# comment
x|y|z) echo xyz ;;
# comment
a|b|c) echo abc ;;
# comment
esac
# Jul 26, 2018: why isn't `..` being terminated properly?
# comment
case "$aaa" in
# comment
bbb) ccc=`echo $ddd|cut -b4-`
echo "test"
# comment
;;
# comment
esac
# comment
echo $VAR abc
export $VAR abc
set $VAR abc

View File

@@ -0,0 +1,33 @@
#!/bin/ksh
# Test variable modifiers
# Variable=value
Variable='value'
Variable="value"
VariableA="pat1xxpat2"
VariableB="pat2xxpat1"
echo ${#}
echo ${#VariableA}
echo ${VariableA#pat1}
echo ${VariableA##pat1}
echo ${VariableB%pat1}
echo ${VariableB%%pat1}
# This gets marked as an error
Variable=${VariableB:+${VariableC:=eng}} # :+ seems to work for ksh as well as bash
Variable=${VariableB:-${VariableC:-eng}} # :- is ksh and bash
# This is OK
Variable='${VariableB:+${VariableC:=eng}}'
Variable='${VariableB:-${VariableC:-eng}}'
Variable="${VariableB:+${VariableC:=eng}}" # :+ seems to work for ksh as well as bash
Variable="${VariableB:-${VariableC:-eng}}" # :- is ksh and bash
# These are OK
: ${VariableB:-${VariableC:-eng}}
: "${VariableB:-${VariableC:-eng}}"
: '${VariableB:-${VariableC:-eng}}'
# Another test
Variable=${VariableB:-${VariableC:-${VariableD:-${VariableE:=eng}}}}
: ${VariableB:=${VariableC:-${VariableD:-${VariableE:=eng}}}}

View File

@@ -0,0 +1,27 @@
#!/bin/sh
# sh4
Variable=${VariableB:-{VariableC}}
Variable=${VariableB:-${VariableC:-{Var3:=eng}}}
# This gets marked as an error while its ok
Variable=${VariableB:-${VariableC:-{Var3:=eng}}}
Variable=${VariableB:=${VariableC:={Var3:=${Var4:-eng}}}}
Variable=${VariableB:=${VariableC:={Var3:=${Var4:-${Var5:-eng}}}}}
Variable=${VariableB:=${VariableC:={Var3:=${Var4:-${Var5:-$Var6}}}}}
# These are OK
Variable="${VariableB:-${VariableC:-{Var3:=eng}}}"
Variable="${VariableB:=${VariableC:={Var3:=${Var4:-eng}}}}"
# This gets marked as an error too
: ${VariableB:-${VariableC:-{Var3:=eng}}}
: ${VariableB:=${VariableC:={Var3:=${Var4:-eng}}}}
# This is OK
: ${VariableB:-${VariableC:-eng}}
: "${VariableB:-${VariableC:-eng}}"
# First line is OK except its missing a closing "}",
# so second line should have some error highlighting
Variable=${VariableB:=${VariableC:={Var3:=${Var4:-eng}}}
Variable=${VariableB:-${VariableC:-{Var3:=eng}}

View File

@@ -0,0 +1,373 @@
#!/bin/sh -x
# sh5
# Note that this is special for sh. ksh will be an extra file later.
# Note too, that sh and ksh allow ${var:-sub} as well as ${var-sub}!
# The ':' is optional!
# This all should be OK
# Case 0a
[ -t 0 ] && date
Variable1=value1
Variable2='value2'
Variable3="value3"
echo "$Variable1" "$Variable2" "$Variable3"
# Case 0b
[ -t 0 ] && echo "\ndate"
Variable1=$HOME
Variable2='$HOME'
Variable3="$HOME"
echo "$Variable1" "$Variable2" "$Variable3"
# Case 0c
[ -t 0 ] && echo "\ndate"
Variable1=$HOME$SHELL
Variable2=$HOME.$SHELL
Variable3=$HOME.$SHELL+$HOME-$SHELL/$HOME
echo "$Variable1" "$Variable2" "$Variable3"
# Case 0d
[ -t 0 ] && echo "\ndate"
Variable1=`date`
Variable2=`id -ng`
Variable3=`id -ng | wc -c`
echo "$Variable1" "$Variable2" "$Variable3"
################################################################################
#
# Case 1a with constants
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:=eng1}
Variable2=${VariableA:-eng2}
Variable3=${VariableA:?eng3}
Variable3=${VariableA:+eng3}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 1b with constants in single quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:='eng1'}
Variable2=${VariableA:-'eng2'}
Variable3=${VariableA:?'eng3'}
Variable3=${VariableA:+'eng3'}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 1c with constants in double quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:="eng1"}
Variable2=${VariableA:-"eng2"}
Variable3=${VariableA:?"eng3"}
Variable3=${VariableA:+"eng3"}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 1d: constants but missing colons
Variable1=${VariableA=eng1}
Variable2=${VariableA-eng2}
Variable3=${VariableA?eng3}
Variable3=${VariableA+eng3}
Variable1=${VariableA='eng1'}
Variable2=${VariableA-'eng2'}
Variable3=${VariableA?'eng3'}
Variable3=${VariableA+'eng3'}
Variable1=${VariableA="eng1"}
Variable2=${VariableA-"eng2"}
Variable3=${VariableA?"eng3"}
Variable3=${VariableA+"eng3"}
# Case 2a with a variable
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:=$HOME}
Variable2=${VariableA:-$HOME}
Variable3=${VariableA:?$HOME}
Variable3=${VariableA:+$HOME}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2b with a variable in single quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:='$HOME'}
Variable2=${VariableA:-'$HOME'}
Variable3=${VariableA:?'$HOME'}
Variable3=${VariableA:+'$HOME'}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2c with a variable in double quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:="$HOME"}
Variable2=${VariableA:-"$HOME"}
Variable3=${VariableA:?"$HOME"}
Variable3=${VariableA:+"$HOME"}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3a with a command substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:=`date`}
Variable2=${VariableA:-`date`}
Variable3=${VariableA:?`date`}
Variable3=${VariableA:+`date`}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3b with a command + option substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:=`id -ng`}
Variable2=${VariableA:-`id -ng`}
Variable3=${VariableA:?`id -ng`}
Variable3=${VariableA:+`id -ng`}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3c with a command + pipe substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:=`id -ng | wc -c`}
Variable2=${VariableA:-`id -ng | wc -c`}
Variable3=${VariableA:?`id -ng | wc -c`}
Variable3=${VariableA:+`id -ng | wc -c`}
echo "$Variable1" "$Variable2" "$Variable3"
################################################################################
#
# The same with one nestet ${} level
# Case 1a with constants
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:=eng1}}
Variable2=${VariableA:-${VarB:-eng2}}
Variable3=${VariableA:-${VarB:?eng3}}
Variable3=${VariableA:-${VarB:+eng3}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 1b with constants in single quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:='eng1'}}
Variable2=${VariableA:-${VarB:-'eng2'}}
Variable3=${VariableA:-${VarB:?'eng3'}}
Variable3=${VariableA:-${VarB:+'eng3'}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 1c with constants in double quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:="eng1"}}
Variable2=${VariableA:-${VarB:-"eng2"}}
Variable3=${VariableA:-${VarB:?"eng3"}}
Variable3=${VariableA:-${VarB:+"eng3"}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2a with a variable
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:=$HOME}}
Variable2=${VariableA:-${VarB:-$HOME}}
Variable3=${VariableA:-${VarB:?$HOME}}
Variable3=${VariableA:-${VarB:+$HOME}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2b with a variable in single quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:='$HOME'}}
Variable2=${VariableA:-${VarB:-'$HOME'}}
Variable3=${VariableA:-${VarB:?'$HOME'}}
Variable3=${VariableA:-${VarB:+'$HOME'}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2c with a variable in double quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:="$HOME"}}
Variable2=${VariableA:-${VarB:-"$HOME"}}
Variable3=${VariableA:-${VarB:?"$HOME"}}
Variable3=${VariableA:-${VarB:+"$HOME"}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3a with a command substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:=`date`}}
Variable2=${VariableA:-${VarB:-`date`}}
Variable3=${VariableA:-${VarB:?`date`}}
Variable3=${VariableA:-${VarB:+`date`}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3b with a command + option substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:=`id -ng`}}
Variable2=${VariableA:-${VarB:-`id -ng`}}
Variable3=${VariableA:-${VarB:?`id -ng`}}
Variable3=${VariableA:-${VarB:+`id -ng`}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3c with a command + pipe substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:=`id -ng | wc -c`}}
Variable2=${VariableA:-${VarB:-`id -ng | wc -c`}}
Variable3=${VariableA:-${VarB:?`id -ng | wc -c`}}
Variable3=${VariableA:-${VarB:+`id -ng | wc -c`}}
echo "$Variable1" "$Variable2" "$Variable3"
################################################################################
#
# The same with two nestet ${} level
# Case 1a with constants
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:=eng1}}}
Variable2=${VariableA:-${VarB:-${VarC:-eng2}}}
Variable3=${VariableA:-${VarB:-${VarC:?eng3}}}
Variable3=${VariableA:-${VarB:-${VarC:+eng3}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 1b with constants in single quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:='eng1'}}}
Variable2=${VariableA:-${VarB:-${VarC:-'eng2'}}}
Variable3=${VariableA:-${VarB:-${VarC:?'eng3'}}}
Variable3=${VariableA:-${VarB:-${VarC:+'eng3'}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 1c with constants in double quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:="eng1"}}}
Variable2=${VariableA:-${VarB:-${VarC:-"eng2"}}}
Variable3=${VariableA:-${VarB:-${VarC:?"eng3"}}}
Variable3=${VariableA:-${VarB:-${VarC:+"eng3"}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2a with a variable
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:=$HOME}}}
Variable2=${VariableA:-${VarB:-${VarC:-$HOME}}}
Variable3=${VariableA:-${VarB:-${VarC:?$HOME}}}
Variable3=${VariableA:-${VarB:-${VarC:+$HOME}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2b with a variable in single quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:='$HOME'}}}
Variable2=${VariableA:-${VarB:-${VarC:-'$HOME'}}}
Variable3=${VariableA:-${VarB:-${VarC:?'$HOME'}}}
Variable3=${VariableA:-${VarB:-${VarC:+'$HOME'}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2c with a variable in double quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:="$HOME"}}}
Variable2=${VariableA:-${VarB:-${VarC:-"$HOME"}}}
Variable3=${VariableA:-${VarB:-${VarC:?"$HOME"}}}
Variable3=${VariableA:-${VarB:-${VarC:?"$HOME"}}}
Variable3=${VariableA:-${VarB:-${VarC:+"$HOME"}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3a with a command substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:=`date`}}}
Variable2=${VariableA:-${VarB:-${VarC:-`date`}}}
Variable3=${VariableA:-${VarB:-${VarC:?`date`}}}
Variable3=${VariableA:-${VarB:-${VarC:+`date`}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3b with a command + option substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:=`id -ng`}}}
Variable2=${VariableA:-${VarB:-${VarC:-`id -ng`}}}
Variable3=${VariableA:-${VarB:-${VarC:?`id -ng`}}}
Variable3=${VariableA:-${VarB:-${VarC:+`id -ng`}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3c with a command + pipe substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:=`id -ng | wc -c`}}}
Variable2=${VariableA:-${VarB:-${VarC:-`id -ng | wc -c`}}}
Variable3=${VariableA:-${VarB:-${VarC:?`id -ng | wc -c`}}}
Variable3=${VariableA:-${VarB:-${VarC:+`id -ng | wc -c`}}}
echo "$Variable1" "$Variable2" "$Variable3"
################################################################################
#
# The same with three nestet ${} level
# Case 1a with constants
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:-${VarD:=eng1}}}}
Variable2=${VariableA:-${VarB:-${VarC:-${VarD:-eng2}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:?eng3}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:+eng3}}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 1b with constants in single quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:-${VarD:='eng1'}}}}
Variable2=${VariableA:-${VarB:-${VarC:-${VarD:-'eng2'}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:?'eng3'}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:+'eng3'}}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 1c with constants in double quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:-${VarD:="eng1"}}}}
Variable2=${VariableA:-${VarB:-${VarC:-${VarD:-"eng2"}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:?"eng3"}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:+"eng3"}}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2a with a variable
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:-${VarD:=$HOME}}}}
Variable2=${VariableA:-${VarB:-${VarC:-${VarD:-$HOME}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:?$HOME}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:+$HOME}}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2b with a variable in single quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:-${VarD:='$HOME'}}}}
Variable2=${VariableA:-${VarB:-${VarC:-${VarD:-'$HOME'}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:?'$HOME'}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:+'$HOME'}}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 2c with a variable in double quotes
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:-${VarD:="$HOME"}}}}
Variable2=${VariableA:-${VarB:-${VarC:-${VarD:-"$HOME"}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:?"$HOME"}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:+"$HOME"}}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3a with a command substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:-${VarD:=`date`}}}}
Variable2=${VariableA:-${VarB:-${VarC:-${VarD:-`date`}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:?`date`}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:+`date`}}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3b with a command + option substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:-${VarD:=`id -ng`}}}}
Variable2=${VariableA:-${VarB:-${VarC:-${VarD:-`id -ng`}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:?`id -ng`}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:+`id -ng`}}}}
echo "$Variable1" "$Variable2" "$Variable3"
# Case 3c with a command + pipe substitution
[ -t 0 ] && echo "\ndate"
Variable1=${VariableA:-${VarB:-${VarC:-${VarD:=`id -ng | wc -c`}}}}
Variable2=${VariableA:-${VarB:-${VarC:-${VarD:-`id -ng | wc -c`}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:?`id -ng | wc -c`}}}}
Variable3=${VariableA:-${VarB:-${VarC:-${VarD:+`id -ng | wc -c`}}}}
echo "$Variable1" "$Variable2" "$Variable3"
################################################################################
#
# This is also allowed:
Variable1=${VariableA-${VarB-${VarC-${VarD=`id -ng | wc -c`}}}}
################################################################################
#
# All cases with ${Var:?} which works for the sh:
Variable4=${Variable4:?}
Variable4=${Variable4:?OK}
Variable4=${Variable4:?`date`}
Variable4=${Variable4:?'an OK string'}
Variable4=${Variable4:?"an OK string"}
Variable4=${Variable4:?$HOME$SHELL}
Variable4=${Variable4:?$HOME:$SHELL}
# All cases with ${Var:?} which works also for ksh:
Variable4=${Variable4:?This is OK}
Variable4=${Variable4:?This is OK, too: `date`}
# What happens with ${#identifier[*]}:
Variable5=${#identifier[*]}

View File

@@ -0,0 +1,71 @@
#!/bin/ksh
# Shall we debug this script? If so, remove the '#' before '#DebugScript=set'
DebugScript=set
# Show that we are busy.
[ -t 0 ] && echo "Please wait ... \c" >`tty`
################################################################################
#
# Display some Help
#
Usage () {
# does this comment work?
VariableName="${BasicConfigName}_*"
# Echo some ksh special variables
echo "CDPATH="${CDPATH}
# Get also a short description of the backuptype/method
eval BackupMethod=\$mess09${BackupType}B
case $BackupType in
3) DefaultDevice=$MountDevice ;;
1|2) DefaultDevice=$TapeDrive ;;
esac
# If we have more the 53 characters in the variables below split them up
# into several lines and add 3 tabs before them
for Variable in DefaultExclude DefaultFindOption DoNotBackupList
do
eval VarValue=\$$Variable
VarValue=`echo $VarValue | FoldS 53 | sed "2,\\$s/^/$Tab$Tab$Tab/"`
eval $Variable=\$VarValue
done
echo "
Usage: $ScriptName [-Options]
Options List:
-v The current version of '$ScriptName'
-h | -H | ? Display this list
"
} # End of Usage
################################################################################
#
# Create a backup using fbackup/frecover
#
ExecuteFbackup () { # TESTING
[ "$DebugScript" ] && set -x || set +x
cd $cwd
} # End of ExecuteFbackup
################################################################################
# main ### main ### main ### main ### main ### main ### main ### main ### main #
################################################################################
#
# Here is the heart of this script:
#
Usage
# And exit
Exit $Result

View File

@@ -0,0 +1,93 @@
#!/bin/sh
# Test file to test 'for do done' loops.
# You can start this script like: $0 {-ne -gt -le ...} (all numeric operators
# are allowed!
# All this works and should be OK
################################################################################
#
# For loop without 'in list'. Uses $1 $2 ... This is a special case!
# This 'for Var, do, done' is a very handy solution AND no real replacement
# available!
#
Function1 () {
echo "Function1: for loop inside a function:\t\c"
[ "$*" ] || echo "none\c"
for Var
do
[ 1 $Var 2 ] && echo "OK \c" || echo "no \c"
done
echo
} # End of Function1
################################################################################
#
# For loop with 'in list' $*
#
Function2 () {
echo "Function2: for loop inside a function:\t\c"
for Var in $*
do
[ 1 $Var 2 ] && echo "OK \c" || echo "no \c"
done ; echo
} # End of Function2
################################################################################
#
# For loop with 'in list' $@. Works the same way as $*
#
Function3 () {
echo "Function3: for loop inside a function:\t\c"
for Var in $@
do
[ 1 $Var 2 ] && echo "OK \c" || echo "no \c"
done ; echo
} # End of Function3
################################################################################
#
# For loop with 'in list' "$@". Special case. Works like "$1" "$2" ...
#
Function4 () {
echo "Function4: for loop inside a function:\t\c"
for Var in "$@"
do
[ 1 $Var 2 ] && echo "OK \c" || echo "no \c"
done ; echo
} # End of Function4
################################################################################
# main ### main ### main ### main ### main ### main ### main ### main ### main #
################################################################################
#
# Here is the heart of this script:
#
echo "Processing the following command line arguements: ${*:-none}"
echo "Script: for loop outside a function:\t\c"
for Var
do
[ 1 $Var 2 ] && echo "OK \c" || echo "no \c"
done ; echo
# Same as function calls
Function1 -eq -ne -gt -ge -le -lt
Function2 -eq -ne -gt -ge -le -lt
Function3 -eq -ne -gt -ge -le -lt
Function4 -eq -ne -gt -ge -le -lt '-ge 1 -a 2 -ge'
# Now the same call like Function4 but with Function1
Function1 -eq -ne -gt -ge -le -lt '-ge 1 -a 2 -ge'
Function1
exit $?

View File

@@ -0,0 +1,82 @@
#!/bin/ksh -p
# Note that this is special test file for ksh. sh is an extra file.
# Note too, that this file contains ONLY things which works for ksh BUT NOT
# for sh
# This all should be OK
# Several keywords without any quotes!
# Case 1a. Several Constants
[ -t 0 ] && date
Variable1=${VariableA:-This is a Text}
Variable2=${VariableA:=This is a Text}
Variable3=${VariableA:?This is a Text}
echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3"
# Case 1b. Variable and Constant
[ -t 0 ] && echo "\n`date`" && unset VariableA
Variable1=${VariableA:-$HOME This is a Text}
Variable2=${VariableA:=$HOME This is a Text}
Variable3=${VariableA:?$HOME This is a Text}
echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3"
# Case 1c. Constant and Variable
[ -t 0 ] && echo "\n`date`" && unset VariableA
Variable1=${VariableA:-This is a Text in $HOME}
Variable2=${VariableA:=This is a Text in $HOME}
Variable3=${VariableA:+This is a Text in $HOME} #! :+ is bash-only, error here expected
Variable1=${VariableA:-This is a Text in $HOME too}
Variable2=${VariableA:=This is a Text in $HOME too}
Variable3=${VariableA:+This is a Text in $HOME too}
echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3"
# Case 1d. More Variables and Constants. Starting with a Variable.
[ -t 0 ] && echo "\n`date`" && unset VariableA
Variable1=${VariableA:-$SHELL}
Variable1=${VariableA:-$SHELL This is a Text in $HOME}
Variable2=${VariableA:=$SHELL This is a Text in $HOME}
Variable3=${VariableA:+$SHELL This is a Text in $HOME}
echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3"
# Case 1e. More Constants and Variables. Starting with a Constant.
[ -t 0 ] && echo "\n`date`" && unset VariableA
Variable1=${VariableA:-"This is a Text in $HOME $SHELL"}
Variable1=${VariableA:-This is a Text in $HOME $SHELL}
Variable2=${VariableA:=This is a Text in $HOME $SHELL}
Variable3=${VariableA:+This is a Text in $HOME $SHELL}
echo "$Variable1" ; echo "$Variable2" ; echo "$Variable3"
# Case 1x. The same with ':'
[ -t 0 ] && echo "\n`date`" && unset VariableA
: ${VariableA:-This is a Text}
: ${VariableA:-$HOME This is a Text}
: ${VariableA:-This is a Text in $HOME}
: ${VariableA:-$SHELL This is a Text in $HOME}
: ${VariableA:-This is a Text in $HOME $SHELL}
# Case 1y. The same with ':' and without the ':' in the parameter substitution
[ -t 0 ] && echo "\n`date`" && unset VariableA
: ${VariableA-This is a Text}
: ${VariableA-$HOME This is a Text}
: ${VariableA-This is a Text in $HOME}
: ${VariableA-$SHELL This is a Text in $HOME}
: ${VariableA-This is a Text in $HOME $SHELL}
################################################################################
#
# This are valid usages for ${Var:?} in ksh!
#
Variable4=${Variable4:?This is an Error Message}
Variable4=${Variable4:?This is an Error Message from `date`}
: ${Variable4:?This is an Error Message}
: ${Variable4:?This is an Error Message from `date`}
exit $?
# Michael Soulier
if [ $# -ne 1 ]; then
echo whatever
exit 1
fi

View File

@@ -0,0 +1,19 @@
#!/bin/sh
# Test file for vim the check () subshells
( cd ; $pwd ) | wc -c
( cd $1 ; $pwd ) | wc -c
( cd ${1} ; $pwd ) | wc -c
( cd ; $pwd ) | wc -c
( cd ${1:-.} ; $pwd ) | sed -e 's!$!/!' -e 's!//*$!/!'
( cd ; $pwd ) | wc -c
( cd ${1:+.} ; $pwd ) | wc -c
( cd ; $pwd ) | wc -c
( cd ${1:=.} ; $pwd ) | wc -c
( cd ; $pwd ) | wc -c
( cd ${1:?} ; $pwd ) | wc -c
( cd ; $pwd ) | wc -c
( cd $HOME ; $pwd ) | wc -c
( cd ${HOME} ; $pwd ) | wc -c
( cd ${HOME} ) | wc -c
((n=1+2))
let n=1+2