> 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. > It works. Thank you very much! -H.