Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 2 Feb 2007 13:48:31 +0100
From:      J65nko <j65nko@gmail.com>
To:        Tigger <tigger@lvlworld.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: unexpected result from sh script with `date`
Message-ID:  <19861fba0702020448u50ac68adqf205a3cd001e901f@mail.gmail.com>
In-Reply-To: <20070202111156.GA41151@lilypie.com>
References:  <20070202111156.GA41151@lilypie.com>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
On 2/2/07, Tigger <tigger@lvlworld.com> wrote:
> Hello, the following simply sh script is outputting unexpected results.
> Any idea why?
>
> --script--
>
> #!/bin/sh
>
> started=`date`
>
> echo "Started at: $started"
> echo "Finished  : "`date`
> exit
>
> --output--
>
> Started at: Fri Feb  2 22:13:51 EST 2007
> Finished  : Fri Feb 2 22:13:51 EST 2007
>
> --problem--
>
> Between 'Feb' and '2', there is two spaces on the 'Started at' line,
> however the 'Finished' one only has 1 space.
>
> I know this sounds picky, but I was not expecting this at all.
>
> uname -a
> FreeBSD piglet 6.2-STABLE FreeBSD 6.2-STABLE #0: Fri Jan 19 04:13:20 EST
> 2007     tigger@piglet:/usr/obj/usr/src/sys/PIGLET  i386

The same on OpenBSD here (ksh)
OpenBSD 4.0-current (GENERIC) #1194: Thu Nov  2 16:32:12 MST 2006
    deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC

It seems to depend whether  the command substitution is within the
quote-delimited string,   for 'echo' or outside that string, in other
words on its own.
------- script----------
 #!/bin/sh

started=$(date)

echo "\$started within \" delimited string for echo"
echo "Started at: $started"
echo "Command substitution \$(date) within \" delimited string for echo"
echo "Finished  : $(date)"
echo "Command substitution \$(date) outside \" delimited string for echo"
echo "Finished  : "$(date)
echo "Command substitution \`date\` outside \" delimited string for echo"
echo "Finished  : "$(date)
-----------------------------------
Output:
-------------------
$started within " delimited string for echo
Started at: Fri Feb  2 13:46:07 CET 2007
Command substitution $(date) within " delimited string for echo
Finished  : Fri Feb  2 13:46:07 CET 2007
Command substitution $(date) outside " delimited string for echo
Finished  : Fri Feb 2 13:46:07 CET 2007
Command substitution `date` outside " delimited string for echo
Finished  : Fri Feb 2 13:46:07 CET 2007
---------------------------------------
Embedded inside the string there are two spaces between Feb and the 2,
as "stand-alone" there is only one space.

Strange indeed ;)

J65nko



Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?19861fba0702020448u50ac68adqf205a3cd001e901f>