Variables in shell script not working

Jef Driesen jefdriesen at hotmail.com
Sat Nov 15 15:20:20 UTC 2008


Karl Auer wrote:
> On Sat, 2008-11-15 at 14:40 +0100, Jef Driesen wrote:
>> If I quote the variable, the error disappears, but the rest of my
>> script does not work anymore. No output is produced on stdout.
>> Echo'ing the variable works, but the script does not seem to execute
>> the contents of the variable when it reaches the line
>>
>> $SOURCE | sed 's/foo/bar'
> 
> What happens? What output do you see, if any?
> 
> Does this script work?
> 
>    X="echo fred"
>    $X | grep fred
> 
> It should output
> 
>    fred
> 
> If that works, try this:
> 
>    #!/bin/sh
>    X="echo fred"
>    $X | sed s/fred/martha/
> 
> It should output
> 
>    martha
> 
> If both those work, I suspect dos2unix does not output what you think it
> outputs. As far as I can tell, dos2unix outputs nothing unless it has a
> problem with a conversion (it converts in place by default), so I'm a
> bit puzzled about what sed is supposed to be doing.

This is indeed the problem! At first, I only had the sed command, which 
does accept a filename AND outputs to stdout. I simply didn't think 
about this difference when adding the dos2unix command.

Is it possible to have the pipe command in the variable, without cat 
interpreting both the pipe symbol "|" and the "dos2unix" as its argument?

SOURCE="cat $FILENAME | dos2unix"





More information about the ubuntu-users mailing list