On Tue, 22 Aug 2006 10:56:11 -0500 (CDT), Hongwei Li wrote:
The problem is when I run it at command line, it works, but not in
the script:
# touch --date="Tue Aug 22 08:30:00 CDT 2006" t1
works well. However, the script mystmp:
#!/bin/sh
newstmp=$1
touch --date=$newstmp t1
and run mystmp as:
# ./mystmp "Tue Aug 22 08:30:00 CDT 2006"
didn't do what I want, but created:
# ls -l
total 32
-rw-r--r-- 1 root root 0 Aug 22 00:00 08:30:00
-rw-r--r-- 1 root root 0 Aug 22 00:00 2006
-rw-r--r-- 1 root root 0 Aug 22 00:00 22
-rw-r--r-- 1 root root 0 Aug 22 00:00 Aug
-rw-r--r-- 1 root root 0 Aug 22 00:00 CDT
-rwxr-xr-x 1 root root 420 Aug 22 10:47 mystmp
-rw-r--r-- 1 root root 0 Aug 22 00:00 t1
What's wrong? Thanks!
The problem is that the parameter has spaces within it, so when you
use that as
a variable within your script, you need to enclose it with quotes. Your script
currently expands that command to something such as:
touch --date=Tue Aug 22 08:30:00 CDT 2006 t1
which - since the "Aug," "22," "08:30:00," etc files don't exist -
creates them
and sets their timestamps to the current time. You need to use --date="$1" so
that the command is interpreted as you had intended:
touch --date="$1" foo.file
That would expand to something such as:
touch --date="Tue Aug 22 08:30:00 CDT 2006" foo.file
which is what I believe you are intending to do.
Hope that helps.
--
Peter Gordon (codergeek42)
This message was sent through a webmail interface,
thus has no digital signature.