bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Potential Bug Report


From: Ross . Emma
Subject: Re: Potential Bug Report
Date: Fri, 22 Jun 2007 15:54:20 -0400

   Thanks for replying. I should've known it was not a bug but a coding 
error on my part. I apologize for crying wolf!





Brian Dessent <address@hidden>
06/22/2007 01:10 PM
Please respond to bug-coreutils
 
        To:     address@hidden
        cc:     address@hidden
        bcc: 
        Subject:        Re: Potential Bug Report

address@hidden wrote:

>    I would like to report what I think is a bug: why the following linux
> "date" command fails to run within a shell script. But, in runs fine on
> the command line. I'm running 2.6.21-1.3194.fc7 on a IBM Thinkpad. I've
> also tested on an IBM eServer running 2.6.9-55.ELsmp with the same
> results. From the shell, it fails with an "extra operand" error. It 
seems
> to misinterpreting the date string and/or formatting string.

It's good that you let us know what kernel versions you're running, but
that's sort of irrelevant.  It would have been better to tell us what
version of coreutils you're using, but in this case the problem isn't
related to coreutils either.

> TDATE="2007-06-01 01:01:01"
> echo $TDATE
> #
> echo "Test#1"
> date +%s -d $TDATE
> #OR
> echo "Test#2"
> date -d $TDATE +'%s'
> #OR
> echo "Test#3"
> EDATE=`date -d $TDATE +'%s'`
> echo $EDATE
> #OR
> echo "Test#4"
> EDATE=`date +'%s' -d $TDATE`
> echo $EDATE

This is not a date bug; it's not a shell bug either, it's a
misunderstanding of how shell quoting works.  The thing after -d must be
specified to 'date' as a single argument.  When you enter the command at
the prompt, you accomplish this by surrounding it in quotes.  However,
in your script, the quoting is absent and so you end up passing each
word of the date string as a separate argument, which is invalid input
to date, which complains.  Everywhere that you have $TDATE you need to
use "$TDATE".  Note that just using quotes when you assign to TDATE is
not sufficient, because the shell re-parses the command when you invoke
date and unless you use quotes there, it will not know that the multiple
words contained in the variable should be kept together as one argument.

Brian



reply via email to

[Prev in Thread] Current Thread [Next in Thread]