| Art Alexion on 22 Feb 2006 16:56:58 -0000 |
|
bergman@merctech.com wrote:
>What doe the echo statements display before the error message? Are they:
>
> OLD="*"
> NEW="*"
> mv "*" "*"
>
>
No. They show exactly what I expect and want.
>That's what I'd expect if there are no files or directories in the current directory.
>
>
But there are.
>=>
>=> even though $NEW does not yet exist, so I am not really moving multiple
>=> files.
>
>The issue isn't that $NEW doesn't exist, but that the initiall expansion of the
>"*" wildcard failed to produce a list of files to be renamed, thus the literal
>character "*" is passed to the mv command. When the shell gets that command, it
>tries to expand "*", producing the error.
>
>=>
>=> What am I doing wrong?
>
>Well, what you're "doing wrong" is not checking the results of the
>metacharacter expansion before calling mv(1). The action of mv will vary, depending
>on what files and directories are in the directory where the script is
>executing.
>
>
Actually there is a lot of checking in the script before I get into the
loop. I just included the loop because that is where I thought the
problem was.
Here is the checking stuff
# See if a command line arg was passed
if [ ! -z $1 ]; then
# We have a command line arg - was it a directory??
if [ -d $1 ]; then
# Wonderful! We were given a directory to clean up!
echo -n "Changing to $1 - "
cd $1 2&>/dev/null
if [ $? = 0 ]; then
# YAY! We're in the directory
echo "DONE"
else
# Couldn't change to the directory...WTF?!
echo "Couldn't change to $1! ERROR!!"
exit 1
fi
else
# It wasn't a directory - bail out!
echo "That's NOT a directory (idiot!) :P"
exit 1
fi
fi
>
>I'd suggest that you go back and take another look at the thread "Interactive
>rm" from a couple of weeks ago. That thread deals with this very issue--how the
>shell handles wildcard expansion.
>
>You may also want to look at:
>
> http://www.oreilly.com/catalog/bash3/
> http://www.oreilly.com/catalog/shellsrptg/
>
>
>
I just bought Ken O. Burch, "Linux Shell Scripting with Bash" as I think
it is time to learn more about these issues instead of just trying to
adapt existing scripts through trial and error.
--
_______________________________________
Art Alexion
Arthur S. Alexion LLC
PGP fingerprint: 52A4 B10C AA73 096F A661 92D2 3B65 8EAC ACC5 BA7A
The attachment -- signature.asc -- is my electronic signature; no need for alarm.
Info @ http://mysite.verizon.net/art.alexion/encryption/signature.asc.what.html
Key for signed PDFs available at
http://mysite.verizon.net/art.alexion/encryption/ArthurSAlexion.p7c
The validation string is TTJY-ZILJ-BJJG.
________________________________________
Attachment:
signature.asc ___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug
|
|