Shell scripting question [newby]

Malcolm Fitzgerald mfitzgerald at
Sun Apr 9 23:04:41 UTC 2006

On 10/04/2006, at 12:39 AM, Jan Grant wrote:

> On Sun, 9 Apr 2006, Malcolm Fitzgerald wrote:
>> I'm trying to follow the instructions at
>> <>
>> At point four it offers this shell script.
>> cut -f 1 -d '$' /usr/local/freebsd-update/work/md5all | uniq |
>>         while read X; do
>>                 if [ -f $X ]; then echo $X; fi;
>>         done | sort > /root/base-old
>> Running this from root shell in konsole (bash) I get "while: 
>> Expression
>> Syntax". The various hints and clues I get from the shell, the web 
>> and man
>> bash haven't helped me. Would someone provide the correct syntax for 
>> me?
> That syntax is correct for sh and bash; you're not running it, however.
> Double-check that after you su to root, you're really running bash. 
> That
> error is what csh will tell you.

Thanks Jan,

Your advice got me to step 7 where the need to pass a control structure 
to the loop stopped me again.

I got a bash shell and I write:

for dist in base dict doc games info manpages ports; do
         cat /mnt/6.0-RELEASE/${dist}/${dist}.?? > /usr/${dist}.tgz

I put it onto three lines by typing "\" at the end of each line to 
achieve the layout and I get the prompt ">". When I get to the end, ie, 
"done" I press Enter and get another prompt.

How can I get the multi-line command executed?


More information about the freebsd-questions mailing list