Op 23-03-17 om 10:49 schreef Jean Delvare: > Apparently it requires a more recent version of mksh than we are > shipping: > > $ echo $KSH_VERSION > @(#)MIRBSD KSH R50 2014/06/29 openSUSE
That version is quite ancient, so you should consider upgrading it to the latest. FYI, modernish <https://github.com/modernish/modernish> currently detects the following bugs on it that are relevant for cross-shell programming. All except BUG_LNNOALIAS, BUG_LNNOEVAL and BUG_NOCHCLASS have been fixed in the current release. The former two are fixed in current cvs. The latter is a design decision from Thorsten that is nonetheless a bug in POSIX terms. * BUG_CMDPV: 'command -pv' does not find builtins. * BUG_CMDSPEXIT: preceding a special builtin with 'command' does not stop it from exiting the shell if the builtin encounters an error. * BUG_CMDVRESV: 'command -v' does not find reserved words such as "if". * BUG_LNNOALIAS: $LINENO is always expanded to 0 when used within an alias. * BUG_LNNOEVAL: $LINENO is always expanded to 0 when used in 'eval'. * BUG_NOCHCLASS: POSIX-mandated character [:classes:] within bracket [expressions] are not supported in glob patterns. * BUG_PP_01: POSIX says that empty "$@" generates zero fields but empty '' or "" or "$emptyvariable" generates one empty field. This means concatenating "$@" with one or more other, separately quoted, empty strings (like "$@""$emptyvariable") should still produce one empty field. With this bug, this erroneously produces zero fields. * BUG_PP_02: Like BUG_PP_01, but with unquoted $@ and only with "$emptyvariable"$@, not $@"$emptyvariable". * BUG_PP_03: Assigning the positional parameters to a variable using either var=$* or var="$*" or both doesn't work as expected, using either default, empty, unset or custom settings of $IFS. * BUG_PP_04: Like BUG_PP_03, but for a default assignment within a parameter substitution, i.e. ${var=$*} or ${var="$*"}. * BUG_SELECTRPL: In a 'select' loop, input that is not a menu item is not stored in the REPLY variable as it should be. * BUG_TESTERR0: test/[ exits successfully (exit status 0) if an invalid argument is given to an operator. Hope this helps, - M.