hi
habe ein problem mir einem shell script, das mir alle grossbuchstaben in einem verzeichnis "klein machen soll"
ich habe 2 variablen:
...
dateia=mp3/Isolee\ -\ 10\ -\ gallus.mp3
datein=mp3/isolee\ -\ 10\ -\ gallus.mp3
...
so und jetzt versuche ich
mv $dateia $datein
und es funktioniert nicht, fehler:
mv: Ungültige Option -- »\«
wenn ich aber
echo mv $dateia $datein
im script schreibe, dann kann ich genau das, was auf dem term ausgegeben wird in die kommandozeile kopieren und es wird ausgefuehrt??????
wer weiss rat?
danke joerg
shell scripte und variablen als parameter
Re: shell scripte und variablen als parameter
hi joerg,
versuch mal folgendes script:
.....
for i in `ls -a /verzeichnisname/*`
do
mv $i `echo $i | tr '[:upper:]' '[:lower:]'`
done
.....
sollte so klappen (zumindest unter Tru64),
ich kann derzeit nicht an mein linux, um es dort zu verifizieren
(bes. was die upper/lower - konstruktion angeht).
aber: be optimistic
greet$
Wolfie
versuch mal folgendes script:
.....
for i in `ls -a /verzeichnisname/*`
do
mv $i `echo $i | tr '[:upper:]' '[:lower:]'`
done
.....
sollte so klappen (zumindest unter Tru64),
ich kann derzeit nicht an mein linux, um es dort zu verifizieren
(bes. was die upper/lower - konstruktion angeht).
aber: be optimistic
greet$
Wolfie
Re: shell scripte und variablen als parameter
hi
geht nicht. liegt wohl daran, dass in den dateinamen leerzeichen vorkommen und die als sonderzeichen gwertet werden. aber das mit dem upper und lower ist ein cooler tip. ich habe auf jeden fall 2 variablen, einmal der alte name und einmal der neue, jeweils mit relativem pfad , und der mv-befehl
mv $variable1 $variable2
funzt nicht, wegen den leerzeichen oder wegen dem minus ich weiss nicht.
bis dann dann
joerg
ps: ohne leerzeichen und so in den dateinamen laeft das script auch schon wunderbar.
geht nicht. liegt wohl daran, dass in den dateinamen leerzeichen vorkommen und die als sonderzeichen gwertet werden. aber das mit dem upper und lower ist ein cooler tip. ich habe auf jeden fall 2 variablen, einmal der alte name und einmal der neue, jeweils mit relativem pfad , und der mv-befehl
mv $variable1 $variable2
funzt nicht, wegen den leerzeichen oder wegen dem minus ich weiss nicht.
bis dann dann
joerg
ps: ohne leerzeichen und so in den dateinamen laeft das script auch schon wunderbar.
Re: shell scripte und variablen als parameter
hi joerg,
mal en schuss ins blaue (nee - nich windoofs blue screen !):
vielleicht hilft maskieren des verzeichnisnamens mit hochkomma (')
oder gaensefuesschen (").
kann es im moment leider nicht testen
greet$
Wolfie
mal en schuss ins blaue (nee - nich windoofs blue screen !):
vielleicht hilft maskieren des verzeichnisnamens mit hochkomma (')
oder gaensefuesschen (").
kann es im moment leider nicht testen
greet$
Wolfie
Re: shell scripte und variablen als parameter
Wenn mv über eine ungültige Option meckert, interpretiert er das "-" aus dem Dateinamen als Beginn einer Option. Das kann man abstellen, in dem man mv vor den Dateinamen die Option "--" übergibt, also <pre>mv -- $dateia $datein</pre>Alternativ verwendest Du Wolfies Vorschlag, also <pre>mv "$dateia" "$datein"</pre>Dadurch werden die Dateinamen als ein zusammengehöriges Argument an mv übergeben, auch wenn Blanks im Namen auftauchen. Und sollte ein Dateiname tatsächlich mal mit - anfangen (ungewöhnlich, aber möglich), dann kombinier das ganze:<pre>mv -- "$dateia" "$datein"</pre>
OK?
OK?
Re: shell scripte und variablen als parameter
Hi,
es ist sicher ein Problem mit dem \ als Escape-Character. Setze lieber den ganzen Dateinamen in Anführungszeichen und laß das \ weg.
Gruß,
hjb
es ist sicher ein Problem mit dem \ als Escape-Character. Setze lieber den ganzen Dateinamen in Anführungszeichen und laß das \ weg.
Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?