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

Christopher Friedt cfriedt-u6hQ6WWl8Q3d1t4wvoaeXtBPR1lH4CV8 at public.gmane.org
Wed Jul 11 12:30:04 UTC 2007


ah got it ;-)

#!/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}"
${SHELL} -c "${CMD}"
exit $?

Christopher Friedt wrote:
> 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
> 
> 
--
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