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

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


again... sorry, revision

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

Here is the right test script:

#!/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=" | bzip2 -9 "
   OUTFILE="${OUTFILE}.bz2"
;;
("gzip")
   COMP_CMD=" | gzip -c -9 "
   OUTFILE="${OUTFILE}.gz"
;;
("")
   COMP_CMD=""
;;
(*)
exit 1
;;
esac

CMD="${CMD} ${COMP_CMD} > ${OUTFILE}"
${CMD}
exit $?

Christopher Friedt wrote:
> hmmph... still no test2.* ... not working ;(
> 
> Christopher Friedt wrote:
>> woops,
>>
>> sorry... .. was saying bzip instead of bzip2
>>
>> ... :)
>>
>> correct 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=" | bzip2 -9 "
>>   OUTFILE="${OUTFILE}.bz2"
>> ;;
>> ("gzip")
>>   COMP_CMD=" | gzip -c -9 "
>>   OUTFILE="${OUTFILE}.gz"
>> ;;
>> ("")
>>   COMP_CMD=""
>> ;;
>> (*)
>> exit 1
>> ;;
>> esac
>>
>> CMD="${CMD} ${COMP_CMD} > ${OUTFILE}"
>> exit $?
>>
>>
>> Christopher Friedt wrote:
>>> 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
>>>
>>>
>> -- 
>> 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
>>
>>
> -- 
> 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
> 
> 
--
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