Echo: Mehrere Befehle

495
bublitz

Hoi alle,

Ich habe derzeit Probleme damit, mehrere Befehle in einem Echo ausführen zu müssen. Die folgende Zeile ist ein Beispiel für das Problem, das ich habe:

echo (cd .. && pwd) 

Die Idee ist, dass, wenn ich mich gerade im Ordner "home / Documents" befinde, der obige Code "home" druckt - sich aber noch im Verzeichnis "home / Documents" befindet. Der obige Befehl schlägt jedoch fehl.

Die allgemeinere Frage ist: Wie kann ich mehrere Befehle in einem Echo ausführen und das letzte Ergebnis (oder alle Ergebnisse drucken, wenn es auf keine andere Weise möglich ist).

Danke und freundliche Grüße.

0
Was auch immer Sie hier tun möchten, ich bin fast sicher, dass "Echo" nicht das richtige Werkzeug ist. Ich erinnere mich an [Ihre vorherige Frage] (https://superuser.com/q/1351925/432690), Sie scheinen `echo 'zu missbrauchen. Siehe [XY-Problem] (https://meta.stackexchange.com/a/66378/355310). Was versuchst du wirklich mit dieser Vorrichtung? Kamil Maciorowski vor 6 Jahren 3
Der andere Thread ist das eigentliche Problem - also zuerst Sudo Su, dann Lftp und dann mehrere Echo-Befehle - aber ich denke, das eigentliche Problem liegt im Echo - deshalb habe ich diese Frage in der Hoffnung gestellt, dass sie auch den anderen antwortet. bublitz vor 6 Jahren 0
Zunächst einmal ist diese Syntax falsch. Weder bash noch zsh können das analysieren. Wie hast du es zum Laufen gebracht? `echo (cd .. && pwd) bash: Syntaxfehler in der Nähe von unerwarteten Token-CD '' Fanatique vor 6 Jahren 1
Sie sind zu sehr an meinem Beispiel aufgehängt - ich habe das geschrieben, um mein Problem zu klären. Versuchen Sie es beim nächsten Mal besser, Ihren eigenen Weg zu finden, anstatt das Beispiel zu kritisieren. Unter der Lösung fand ich :-) bublitz vor 6 Jahren 0
"Statt das Beispiel zu kritisieren" - Die Leute verstehen Ihren Code nicht (hier und in der anderen Frage). Sie glauben vielleicht, dass Ihr Code selbsterklärend ist, aber nicht. Entschuldigung, es ist so falsch und haarig, dass es WTF-Momente auslöst. Keine Schande, wir wussten alle nichts. Meiner Meinung nach müssen Sie die Werkzeuge, die Sie verwenden, erlernen und verstehen. Wir können Ihnen dabei helfen. Fragen "Was ist los mit` echo \ `pwd \` `?" ist ein guter start. Kamil Maciorowski vor 6 Jahren 2
Bitte sehen Sie folgendes: [Was ist los mit `echo $ (stuff)` oder `echo \` stuff \ ``?] (Https://superuser.com/q/1352850/432690) Kamil Maciorowski vor 6 Jahren 0

2 Antworten auf die Frage

2
Kamil Maciorowski

Die Idee ist, dass, wenn ich mich gerade im Ordner befinde home/Documents, der obige Code gedruckt wird home- sich aber immer noch im Verzeichnis befindethome/Documents

Sie brauchen gar nicht, echoweil Sie pwddrucken, was Sie wollen. Benutze das:

(cd .. && pwd) 

Hier gibt es zwei kluge Dinge:

  • (whatever)läuft whateverin einer subshell. Wenn cdsich diese Klammern in diesen Klammern befinden, wird das aktuelle Arbeitsverzeichnis der Subshell geändert, nicht die Hauptshell (Ihre aktuelle).
  • a && bläuft bwenn iff aerfolgreich war (zurückgegebener Exitstatus 0). Wenn Sie möchten, dass Ihr Skript cdrobust ist, sollten Sie im Allgemeinen immer überprüfen, ob es cderfolgreich war. Dadurch wird verhindert, dass andere Befehle in einem falschen Verzeichnis ausgeführt werden.

Wenn Symlinks vorhanden sind, wird möglicherweise nicht der erwartete Pfad angezeigt. Weitere Informationen finden Sie in dieser Community-Wiki-Antwort .

-1
bublitz

Ich habe die Lösung gefunden:

(cd .. && echo `pwd`) 

Vielen Dank :)

Warum benutzt du immer noch Echo? Mach einfach "(cd .. && pwd)" Attie vor 6 Jahren 4
Verwandte: [Cargo Cult-Programmierung] (http://www.catb.org/jargon/html/C/cargo-cult-programming.html). Kamil Maciorowski vor 6 Jahren 2
Ja, du brauchst es. Das Problem war, dass der Befehl auf einem Server ausgeführt werden muss und deshalb muss ich das Echo drucken (damit der Server den Befehl "pwd" und nicht den aktuellen Ordner sieht - was ein ungültiger Befehl wäre). bublitz vor 6 Jahren 0