Re: shell script question
On Sunday 12 October 2003 6:50 pm, Colin Watson wrote:
>On Sun, Oct 12, 2003 at 06:37:16PM -0400, Jeff Elkins wrote:
>> I'm trying to write a script to change spaces in a filename to the
>> underscore character:
>>
>> #!/bin/sh
>> for i in *; do
>> if test -f $i; then
>> mv $i `echo $i | tr '" "' '_'`
>> fi
>> done
>>
>> When run, it gives me the error "too many args in line four."
>
>If you find yourself writing $variable without double quotes around it
>in shell, you should think twice to make sure that you know exactly what
>expansion rules are going to apply to it. Usually the answer is "more
>than you wanted".
>
>Try this instead (untested):
>
> #! /bin/sh
> for i in *; do
> if test -f "$i"; then
> mv "$i" "`echo "$i" | tr ' ' _`"
> fi
> done
>
>Also consider 'set -e' just below the #! line, in case one of the mv
>commands goes bananas for some reason.
That worked great! - God, I love this list :)
Thanks,
Jeff
Reply to: