Das setzen einer environment-variable in csh
Habe ich die folgende Zeile an die erste Zeile in meinem Skript-Datei:
#!/bin/sh
So, ich bin mit csh.(?)
Ich wanto ordnen Sie die Ausgabe des folgenden auf eine Umgebungsvariable:
echo $MYUSR | awk '{print substr($0,4)}'
Ich versuche:
set $MYVAR = echo $MYUSR | awk '{print substr($0,4)}'
Aber es funktioniert nicht,
Wie kann ich es tun? Ich möchte es in eine sh-Datei.
Nein, /bin/sh die bourne-shell oder manchmal ersetzt durch bash
Ich bin neugierig, haben Sie für Ihr Skript zu
Ich bin neugierig, haben Sie für Ihr Skript zu
sh
oder csh
?InformationsquelleAutor alwbtc | 2012-03-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte das Skript Aussehen
Ich habe keine Möglichkeit zu testen, gerade jetzt, lassen Sie mich jetzt, wenn es nicht funktioniert.
Wenn Sie geerbt haben anhand von Ihrem Skript von jemand anderem, mit der
#!/bin/sh
,dann haben Sie, um herauszufinden, wenn /bin/sh ist eigentlich die bourne-shell, oder wenn es ein link auf /bin/bash
Können Sie sagen, dass, indem Sie
wenn Sie wieder Informationen über die Dateien, in denen die Größe ist genau die gleiche, die man auch wirklich mit der bash, aber als /bin/sh
So versuchen Sie, diese 2 Lösungen
UND
in allen Fällen (csh) enthalten, die back-ticks UND die
$( ... )
sind bekannt als Kommando-substitution.Was jeder Ausgabe kommt aus Sie den Befehl ausführen im inneren ersetzt wird in der Befehlszeile UND dann wird der gesamte Befehl ausgeführt wird.
Ich hoffe, das hilft.
ja, deine /bin/sh und /bin/bash sind wirklich das gleiche Programm. In einigen Systemen, die Verwendung von /bin/sh schränkt die Funktionen, die in /bin/bash-um diejenigen, die in der Bourne-shell (/bin/sh auf älteren Unix-Systemen wie Solaris/HP/AIX, et.al). Wenn Sie dies tun, für sich selbst, Sie definitiv möchten, verwenden Sie bash die Zukunft. Wenn Sie es tun, für einen job, den Sie haben, um herauszufinden, ob es OK ist, dies zu tun.
...... Sie müssen nur an export-Variablen, die erforderlich sind für die Verwendung innerhalb einer sub-shell-Umgebung. Sie können entweder überprüfen, ob Ihr Programm funktioniert ohne die exportieren, ODER Sie können einfach gehen Sie vor und exportieren Sie es. Das sagte, ich nicht empfehlen Export alle Variablen sind, wie wird die Speichernutzung erhöht, die für keine wirklich guten Zweck.
Ich habe versucht MYVAR = $(echo $MYUSR | awk '{print substr($0,21)}') export MYVAR aber es tut anythin anzeigen, wenn ich echo $MYVAR in der Anwendung xterm, was ging schief?
was ist in Ihrem var $MYUSR ? AUCH keine Leerzeichen erlaubt rund um ' = ' ist das ein Tippfehler oder hast du tatsächlich mit Leerzeichen um das '='? UND, ich nehme an, Sie hatte wirklich eine
export MYVAR
auf einer separaten Zeile? Wenn nicht, sollten SieMYVAR=$(echo $MYUSR | awk '{print substr($0,21)}') ; export MYVAR
(beachten Sie das Semikolon). Viel Glück.InformationsquelleAutor shellter
wenn es
/bin/sh
es die bourne-shell oder bash, und verwenden Sie "zurück" Anführungszeichen zu führen etwas zu ordnen, dass...echo $SHELL
bekomme ich/bin/csh
. Wenn ichMYVAR =
echo $CARMUSR | awk '{print substr($0,21)}"` bekomme ich "command not found" Fehler.Ihrer Befehlszeilen-shell, csh werden, aber das Skript Sie schreiben, wenn Sie /bin/sh nach #!, laufen in der bourne-shell oder bash.
InformationsquelleAutor dldnh
Diesem Skript die erste Zeile zeigt an, dass es ausgelegt werden sollte, die von der Bourne-shell (sh), nicht csh. Ändern Sie es zu
In der Zukunft, verwenden Sie 4 Leerzeichen vor dem code-Beispiele, dann die '#' verliert an Bedeutung (innen S. O.), um den text Fett. Beachten Sie auch oben im text-Eingabe-Feld gibt es eine Reihe von Bearbeitungs-tools, einschließlich {}, um " auto-indent (Mit 4 Leerzeichen) ein block von text, so wird es dargestellt, als-ist, D. H. für code-Beispiele, Programm, output, etc. Viel Glück und keep posting.
InformationsquelleAutor John Retterer
Erste Zeile in Ihrem code zeigt deutlich, Sie sind nicht mit einem
csh
. Sie sind mit einem einfachensh
Umwelt/shell. Sie haben 2 Optionen:#!/bin/csh
ODERHalten erste Zeile unverändert, aktualisieren Sie den code für die Einstellung der variable.
Lassen Sie mich wissen, wenn Sie keine Fehler bekommen.
InformationsquelleAutor mtk