Ich bin daran interessiert, die Ausgabe von zwei Befehlen auf eine Variable zu lenken. Ich möchte nicht, dass die Ausgabe auf dem Bildschirm angezeigt wird, sondern einer Variablen in meinem Skript zugewiesen wird, damit ich sie wieder verwenden kann.
Was ich tue, ist die Dateigröße aus einem Verzeichnis mit den folgenden Befehlen abzurufen:
ls -l /var/spool | wc -c
Dieser Befehl gibt mir die Dateigröße in Bytes und zeigt die Ausgabe als Ganzzahl an. Ich bin daran interessiert, diese Ganzzahl einer Variablen nach meinem Geschmack zuzuweisen, damit ich sie später mit einer anderen Variablen vergleichen kann
Das scheint nicht zu funktionieren:
size = ls -l /var/spool | wc -c
Würde die Umleitung funktionieren?
So was....
ls -l /var/spool | wc -c > size
In beiden Fällen möchte ich, dass diese numerische Ausgabe einer Variablen zugewiesen und nicht auf dem Bildschirm angezeigt wird.
Anregungen sind sehr willkommen!
quelle
size=`ls -l /var/spool | wc -c`
. Verwenden Sie dieses Format in Ihrer Antwort: "` `size =` ls -l / var / spool | wc -c` `` "ohne doppelte Anführungszeichen;)$()
aus den hier erläuterten Gründen: stackoverflow.com/a/9449788/2907484 :-)ls -l /var/spool | wc -c > size_file
Sie dies getan haben , können Sieread size_var < size_file
. (2) Siehe auch Kann $ () Backticks für die Befehlsersetzung immer ersetzen?Ich bevorzuge die Lösung, die Rmanos Antwort bietet, aber wenn Sie nur die Umleitung verwenden möchten:
quelle
set -e
,set -o pipefail
usw.). Wenn Sie also$(…)
Ihr Skript verwenden, wird es immer fortgesetzt, während es bei Umleitung so eingerichtet werden kann, dass es fehlschlägt. (was kann sein, was Sie wollen oder nicht).