On Fri, Nov 03, 2017 at 10:29:13AM +0700, Robert Elz wrote:
>       if [ -d "${FOOFOOFOO:=""}" ]; ...
> 
> is not really portable.   In bash, and several other shells, it does what
> it looks like it should do, but in posix (as it stands today) and in some
> other shells, including the original Bourne shell, that is parsed as
> 
>       if [ -d  "${FOOFOOFOO:=""}" ]; ...
>                  ^=============v^=v

I am not seeing any evidence of this.

wooledg:~$ bash
wooledg:~$ /home/wooledg/bin/args "${FOO:=""}"
1 args: <>

wooledg:~$ sh
$ /home/wooledg/bin/args "${FOO:=""}"
1 args: <>

$ ssh root@imadev
... (c)Copyright 1983-1996 Hewlett-Packard Co.,  All Rights Reserved. ...
# exec ksh
# /home/wooledg/bin/args "${FOO:=""}"
1 args: <>

# /usr/old/bin/sh
# /home/wooledg/bin/args "${FOO:=""}"
1 args: <>

That's bash 4.4, dash 0.5.8, ksh88 on HP-UX 10.20, and a Bourne shell on
HP-UX 10.20, respectively.

Reply via email to