sh question: commands as variables / stream operators in a variable

Christopher Friedt cfriedt-u6hQ6WWl8Q3d1t4wvoaeXtBPR1lH4CV8 at public.gmane.org
Wed Jul 11 11:33:43 UTC 2007


This is a bit of a tricky thing to work around, but i would basically 
like to include shell stream operators in a variable that will 
eventually be a command string.

Particularly, I would like to make compression selectable in a script 
through a variable which contains the pipe operator '|' and then run a 
command (stored also as a variable) which would include a redirect on 
stdout '>'

Does anyone know why something like this wouldn't work (at least in bash) ?

My output is:
cat: invalid option -- 9
Try `cat --help' for more information.

Any suggestions are very welcome ;-)

~/Chris

A simple test script is here:

#!/bin/sh

echo 'Hello World!' > test.txt
CMD="cat test.txt"
OUTFILE="test2.txt"

# COMP can be one of '', 'bzip2', 'gzip'
COMP="bzip2"
COMP_CMD=""
case "$COMP" in
("bzip2")
   COMP_CMD=" | bzip -9 "
   OUTFILE="${OUTFILE}.bz2"
;;
("gzip")
   COMP_CMD=" | gzip -c -9 "
   OUTFILE="${OUTFILE}.gz"
;;
("")
   COMP_CMD=""
;;
(*)
exit 1
;;
esac

CMD="${CMD} ${COMP_CMD} > ${OUTFILE}"
exit $?
--
The Toronto Linux Users Group.      Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wiki/Mailing_lists





More information about the Legacy mailing list