[net.unix-wizards] Why parse lines with colons

martillo@ihuxt.UUCP (Yehoyaqim Martillo) (07/12/84)

>One of the reasons /bin/sh (bsh to those who like csh)
>parses lines with ":" in the beginning is because of
>constructs like the following:

>: ${FOO:-default}

>This effectively sets $FOO to a default value if not previously
>set.  

According to my shell manual the value of this expression is $FOO is FOO
is set and not not null otherwise, the value is default.  The value of FOO
does not change.  I believe he means 

: ${FOO:=default}
	
>The longhand way would be:

>if [ "${FOO}" = "" ]
>then
>	FOO=default
>fi

He could just as well have used:

FOO=${FOO:-default}
	
which avoids the ":" and takes hardly any (and probably no) more time to
execute.

-- 

Who wouldn't break for whales?

Yehoyaqim Shemtob Martillo
	

dave@csu60.UUCP (07/13/84)

Maybe my shell is weird, but I had to say:

FOO=${FOO:-default}

The simple ": ${FOO:-default}" didn't work.

I find those ":" comments useful for makefiles where I want to
null out a particular operation e.g.

INSTALL=":" make fred

where $INSTALL normally defaults to "install".

npl@spuxll.UUCP (Nick Landsberg) (07/17/84)

One of the reasons /bin/sh (bsh to those who like csh)
parses lines with ":" in the beginning is because of
constructs like the following:

: ${FOO:-default}

This effectively sets $FOO to a default value if not previously
set.  The longhand way would be:

if [ "${FOO}" = "" ]
then
	FOO=default
fi


		From the hairy eyeball of ---
		Nick Landsberg ( ....!spuxll!npl)

dan@haddock.UUCP (07/18/84)

#R:spuxll:-52600:haddock:16800020:000:593
haddock!dan    Jul 16 13:59:00 1984

> One of the reasons /bin/sh (bsh to those who like csh)
> parses lines with ":" in the beginning is because of
> constructs like the following:
> : ${FOO:-default}

I think you mean
: ${FOO:=default}

> This effectively sets $FOO to a default value if not previously
> set.	The longhand way would be:
> if [ "${FOO}" = "" ]
> then
>	 FOO=default
> fi

No, the "longhand" way would be
    FOO=${FOO:-default}
which isn't very much longer, and has the advantage that it works even if you
set -u (which I usually do).  I don't think this is a good reason to parse
lines with ":".

	Dan Franklin