Hallo, On Wed, 16 Apr 2003, Jan Trippler wrote:
On Mit, 16 Apr 2003 at 06:08 (+0200), David Haller wrote:
On Tue, 15 Apr 2003, Jan Trippler wrote: [...]
if test -d "$file"; then echo "Verzeichnisse können nicht nach $trash verschoben werden" continue
¿Por qué?
In dieser Variante war die Struktur in trash flach (Dateien werden da ja auch nicht mit ihren Pfaden gesichert), also fand ich es designmäßig ;-) daneben, Verzeichnisse mit reinzunehmen.
Auch Verzeichnisse lassen sich umbenennen (aka Verschieben) :)
[...]
if mv -i "$file" "$new" ## ich will immer noch auf der sicheren Seite ## sein, falls es zu einer Namenskollision kommt
Wenn Du meinst ;-) Ist natürlich sicherer, wenn z. B. mehrere Scripts gleichzeitig ins gleiche trash brezeln.
Jo. Ich lass sowas einfach gern drin. Wenn's, wie "geplant" nicht auftaucht, dann merkt der Anwender nie was vom '-i', aber wenn's dann mal noetig waere, dann ist's schoen es drin zu haben, IMO ;) Naja, wir sind uns ja eh einig, dass das script sowieso Unfug ist ;) rm is rm, weg is weg; und gut is ;) Wer nich loeschen will, der soll bitteschoen auch selber schreiben, was er will, also z.B. ein 'mv -i blubb ~/trash'.
Ich hasse diese hirnrissige:
befehl if befehl_der_prueft_ob_befehl_ok; then ...
Ja ja, ich habe es einfach nur übernommen ;-)
Jaja... ;))
[...]
Fazit: $? ist in allen Faellen ueberfluessig, in denen man den Exit-status _nicht_ explizit einer benamsten Variablen zuweist oder z.B. mittels echo ausgibt.
Folgendes illustriert diese beiten Ausnahmen, in denen $? sinnvoll ist:
==== befehl befehl_status="$?" case $befehl_status in 1) ...;; 2) ...;; *) ...;; esac exit $befehl_status ====
Sinnvoll kann diese Zuweisung auch in folgendem Fall sein: for x in ir gend ei ne Sa mml ung; do tue_was_mit $x rc=$? raeume_auf_mit $x test $x -ne 0 && break done
Und wo machst du dann noch was mit $rc? Oder hast du das nur vergessen? ;) Und ja, prinzipiell ist das einer der Faelle (wie oben bei mir beim case), wo man anschliessend noch was mit dem exit-status machen will. Also ist dein Beispiel nur ne andere Variante dieser Ausnahme: ==== befehl status=$? machwasanderes_das_$?_aendert machwasmit $status ====
[...]
Jetzt kann höchstens noch die while-Schleife bis zum MAXINT laufen und dann das Script abbrechen, aber wenn dieser Fall eintritt, läuft eh was schief ;-)
Ajup. s.o.
Gibst Du immer so schnell auf? *g*
Nicht immer, aber immer oefter? *g*
[...]
cnt=1 for file in "$@" do if test -d "$file"; then newfn= newdn="$file" else newfn="`basename \"$file\"`" newdn="`dirname \"$file\"`" fi newdn="$trash`(cd \"$newdn\"; pwd)`"
*huch*[tm]. Da fehlt noch die Fehlerbehandlung, falls das cd fehlschlaegt... Und wozu die subshell?
Die Subshell ist doppelt gemoppelt, stimmt.
newdn="${trash}/`cd \"$newdn\" || exit -1; pwd -P`"
newdn="$trash`cd \"$newdn\" && pwd`" test "$newdn" = "$trash" && continue
*AUTSCH* Ja!!1 Ich glaube, wir sollten immer die scripte vom jew. anderen gegenlesen lassen ;)) Den Sonderfall $newdn = $trash hab ich uebersehen. Und wenn das 'cd' scheitert, haben wir immer "$trash" als "$newdn"... Da ist das `||exit x` also tatsaechlich ueberfluessig.
Was hast du eigentlich gegen $(( ))?
Tradition ;-) Und wie wir mal vor ein paar Wochen gesehen haben, sind `` und $() eben doch nicht 100% gleich (wenn Du Dich nicht erinnern kannst, suche ich den Thread noch mal raus). `` funktioniert IMHO öfter als $().
'$(( ))' != '$( )' '$(( ))' ist aequivalent zu '$[ ]', '$()' (annaehernd) zu '``'....
Apropos shells: ich verwende das Teil auch viel zu selten, aber... [...] Allerdings ist die perlsh (ich hab' hier aber noch die vom 27.1.00) in Teilen noch recht unfertig und "alpha" oder so, und ob die noch ueberhaupt noch weiterentwickelt wird weiss ich auch nicht.
Fuer Perlianer ist perlsh aber ein nettes Spielzeug statt 'perl -e' ;)
Dann nehme ich aber lieber gleich perl. Immer schön trennen zwischen Perl und 'ner Shell - wo bleibt denn sonst der Spaß?
Aber die perlsh ist erstens ein nettes Spielzeug(!), und zweitens u.U. praktischer ;) Du schreibst doch sicher auch nicht immer alles in ein script in ~/bin, sondern gibst, zumindest teilweise erstmal direkt in eine interaktive shell ein ;) Kurz: "Kannstu perl? muttu perlsh spielen!"
[...]
PS: Jan, solle' mer mal unsere "fiesen" Dateinamen sammeln und als tarball wo ablegen?
Jut, könn' wa machn. Gehn wir zu Dir oder zu mir? :-) Ich baue gerade eine kleine Seite auf, wo das gut reinpassen tun täte.
Hmjo ;) Gern. Bei mir passt's zwar auch, und ich will eh im Laufe der Aktualisierung auch eine Rubrik "Scripts und Verwandtes" aufmachen[1]... Wie waere's wenn wir den tarball gegenseitig spiegeln? -> weiteres per PM? "Master" kannst gern du sein, wie ich mich kenne, bin ich bald froh drum, mich nicht kuemmern zu sollen ;) Ok, jedenfalls, ich erneuere also mal mein "kranke_dateinamen" -Verzeichnis, da hab ich zwischendurch mal alles geloescht... ;) Apropos: perl -e 'mkdir("./~")' kann "interessante" Auswirkungen haben... (perl oder die ash hilft bei der Beseitigung ;) -dnh, dessen HP inzwischen so veraltet ist, dass es nicht mal das schaemen mehr lohnt ;) Das Update ist aber nach wie vor und immer wieder in Arbeit :)) [1] mit den Jahren hat sich die ein oder andere "Perle" gefunden ;) -- Do infants have as much fun in infancy as adults do in adultery?