On 20/02/2011 18:40, Warren Block wrote:
$() apparently isn't quite the same as backticks, although sh(1) doesn't
mention that, or I just missed it. This script is just supposed to
escape special characters* in a path/filename:
#!/bin/sh

DESTDIR="./"
COMPFILE=".cshrc"

PSTR=`echo "${DESTDIR}${COMPFILE}" | sed 's%\([?:.%\\]\)%\\\1%g'`
echo ${PSTR}

PSTR=$(echo "${DESTDIR}${COMPFILE}" | sed 's%\([?:.%\\]\)%\\\1%g')

% ./test.sh
\1/\1cshrc
\./\.cshrc

With backticks, the backreference \1 never seems to be replaced with the
actual pattern, regardless of search pattern. Tested on 8-stable and
9-current.

*: That's special characters as less(1) -Ps sees them.
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to
"freebsd-questions-unsubscr...@freebsd.org"
I'd prefere $() rather than ``. It's more powerful, for example you can 
write a multiple $() but not `` see :
markand@Abricot ~ $ echo $(basename $(which dmesg))
dmesg

markand@Abricot ~ $ echo `basename `which dmesg``
usage: basename string [suffix]
       basename [-a] [-s suffix] string [...]
which dmesg

Of course the example code is useless but shows the limitations of ``. Nowadays all shells supports $() so I advise you to use it :).
Cheers,

--
David Demelier
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to