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