Differences between revisions 1 and 5 (spanning 4 versions)
Revision 1 as of 2007-05-03 00:10:15
Size: 768
Editor: redondos
Comment:
Revision 5 as of 2009-09-15 18:06:54
Size: 751
Editor: GreyCat
Comment: ./*
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[Anchor(faq74)]] <<Anchor(faq74)>>
Line 3: Line 3:

The extended forms of ParameterSubstitution work with ["BASH"], KornShell, KornShell93, but not with the older BourneShell. If the code needs to be portable to that shell as well, {{{sed}}} and {{{expr}}} can often be used.
Most of the extended forms of [[BashFAQ/073|parameter expansion]] do not work with the older BourneShell. If your code needs to be portable to that shell as well, {{{sed}}} and {{{expr}}} can often be used.
Line 9: Line 8:
    for file in *.doc     for file in ./*.doc

How do I get the effects of those nifty Bash Parameter Expansions in older shells?

Most of the extended forms of parameter expansion do not work with the older BourneShell. If your code needs to be portable to that shell as well, sed and expr can often be used.

For example, to remove the filename extension part:

    for file in ./*.doc
    do
        base=`echo "$file" | sed 's/\.[^.]*$//'`    # remove everything starting with last '.'
        mv "$file" "$base".txt
    done

Another example, this time to remove the last character of a variable:

    var=`expr "$var" : '\(.*\).'`

or (using sed):

    var=`echo "$var" | sed 's/.$//'`

BashFAQ/074 (last edited 2022-10-20 21:17:06 by emanuele6)