07-03-2017
You are hoping the backslash in the expansion of ${chLine#?} will be treated as a literal backslash character. And, in the expansion of ${chLine} it is. But, in word in ${chLine%word} the backslash is an escape character. Since \# is treated as an escaped # in the pattern instead of the two character literal \#, there is no match and the string isn't removed from the expansion with the removal of a matching smallest suffix pattern.
This is one of the changes that was made to ksh88 behavior (that is handled differently in ksh93) while the POSIX shell standard was being developed.
I think this explains the difference you're seeing, but unless your script tests which version of ksh you're using and uses different code for the two cases, you may have trouble finding a common variable expansion that will get you what you want in both versions of the shell. Unfortunately, you can't use ${chLine:2} in ksh88 (but it gives you what you want in ksh93).
This User Gave Thanks to Don Cragun For This Post:
9 More Discussions You Might Find Interesting
1. UNIX for Advanced & Expert Users
If have
var='$variable'
how can I expand $variable.
I have tried many thing like duble quotes/braces etc, but nothing worked.
I need the solution ASAP. (2 Replies)
Discussion started by: Bsk
2 Replies
2. Shell Programming and Scripting
Any means of running ksh93 in a ksh88-mode?
Might sound odd, but I want/need to restrict U/Win-developed scripts to correspond to the ksh88 version on my Solaris environment(s). Thanks. (2 Replies)
Discussion started by: curleb
2 Replies
3. Shell Programming and Scripting
Hi all!
Does anybody know how can I check if any UNIX installation has implemented ksh88 or ksh93?
Thanks in advance.
Néstor. (3 Replies)
Discussion started by: Nestor
3 Replies
4. Shell Programming and Scripting
Hi,
I have a script that calls an external program to perform some calculations and then I read with "grep" and "sed" values from the output files. I've noticed that performance of KSH93 degrades with every iteration. The output files are all the same size, so I don't understand why after the... (2 Replies)
Discussion started by: i.f.schulz
2 Replies
5. UNIX for Dummies Questions & Answers
Hi,
The following code finds the line containing fruits in test.txt and replaces instances of apple with banana.
ed -s test.txt <<< $'/fruits/s/apple/banana/g\nw'
What I want to do is put variables in the place of fruits, apple and banana.
I have tried replacing ' with " to get... (2 Replies)
Discussion started by: de_la_espada
2 Replies
6. Shell Programming and Scripting
Hi Guys,
I have an issue with awk and variables. I have trawled the internet and forums but can't seem to get the exactt syntax I need.
I have tried using awk -v and all sorts of variations but I have hit a brick wall. I have spent a full day on this and am just going round in circles.
... (3 Replies)
Discussion started by: gazza-o
3 Replies
7. UNIX for Advanced & Expert Users
Hi Experts,
I have several shell scripts that have been developed on a Linux box for korn ksh93.
If we want to run this software on an AIX 6.1 box that runs ksh88 by default can we just change the she-bang line to reference /bin/ksh93 which ships with AIX as its "enhanced shell" to ensure... (6 Replies)
Discussion started by: Keith Turley
6 Replies
8. AIX
Hi everyone !
Im trying to know from wich version of AIX KSH93 is available ?
Internet tell me 6.x and 7.x AIX are available, bue what about 5.x ?
Is KSH93 available on AIX 5.x ?
Is it the same way to manipulate variables as KSH93 on 7.x ?
Thanks for your support and have a nice day ! (2 Replies)
Discussion started by: majinfrede
2 Replies
9. UNIX for Beginners Questions & Answers
Hi Guys,
I wrote a collection of bash functions years ago and now need to use them again but
I'm getting some error messages when eval tries to expand the variables names.
I recollect that I used the shopt command to set one of the options but I can't quite
remember the command that I... (8 Replies)
Discussion started by: ASGR
8 Replies
LEARN ABOUT DEBIAN
shcomp
SHCOMP(1) User Environment Utilities SHCOMP(1)
NAME
shcomp - compile a ksh93 shell script
SYNOPSIS
shcomp [ options ] [infile] [outfile]]
ORIGIN OF THIS MAN PAGE
This man page was written by Christophe Martin <Schplurtz@free.fr> for the Debian GNU/Linux system. It is based on "shcomp --man" output.
DESCRIPTION
Unless -D is specified, shcomp takes a shell script, infile, and creates a binary format file, outfile, that ksh93 can read and execute
with the same effect as the original script.
Since aliases are processed as the script is read, alias definitions whose value requires variable expansion will not work correctly.
If -D is specified, all double quoted strings that are preceded by $ are output. These are the messages that need to be translated to
locale specific versions for internationalization.
If outfile is omitted, then the results will be written to standard output. If infile is also omitted, the shell script will be read from
standard input.
OPTIONS
-D, --dictionary
Generate a list of strings that need to be placed in a message catalog for internationalization.
-n, --noexec
Displays warning messages for obsolete or non-conforming constructs.
-v, --verbose
Displays input from infile onto standard error as it reads it.
--man Displays this man page on standard error and exits.
--help Shows a short help message and exits.
EXIT STATUS
0 Successful completion.
>0 An error occurred.
DEBIAN WARNING
On a Debian GNU/Linux system, more than one package may provide ksh. the output of shcomp can only be used by ksh93. Any other ksh will be
unable to run the compiled script.
EXAMPLE
( echo '#! /bin/ksh93' ; shcomp myscript ) > myscript.bin &&
chmod 755 myscript.bin
./myscript.bin
SEE ALSO
ksh(1)
IMPLEMENTATION
version shcomp (AT&T Labs Research) 2012-02-29
author David Korn <dgk@research.att.com>
copyright Copyright (c) 1982-2012 AT&T Intellectual Property
license http://www.eclipse.org/org/documents/epl-v10.html
KSH93 Fri Jun 3 2005 SHCOMP(1)