Ich schreibe ein Skript und möchte die Ergebnisse von bc
in eine Variable übergeben. Ich habe 2 Variablen ( var1
und var2
) deklariert und ihnen Werte gegeben. In meinem Skript möchte ich die Ergebnisse von bc
an eine andere Variable übergeben, var3
damit ich mit ihnen var3
für andere Berechnungen arbeiten kann. Bisher konnte ich das Ergebnis in eine Datei schreiben, die nicht das ist, wonach ich suche, und ich konnte das Ergebnis im Terminal wiedergeben, aber ich möchte das Ergebnis im Moment nur an eine Variable übergeben, damit Ich kann mit dieser Variablen arbeiten.
echo "scale=2;$var1/var2" | bc
quelle
|
der Befehl auf der rechten Seite der Pipe in einer Subshell ausgeführt. Das Öffnen einer neuen Subshell erfordert Ressourcen (dies entspricht dem Öffnen einer neuen Instanz von bash, um diesen Befehl auszuführen). Wenn Sie es vermeiden können, vermeiden Sie es. In diesem Fall wird der Befehl mit Piping anecho
to in einer Subshell ausgeführt und ist in gewisser Weise verzögert (keine Beleidigung), da bash das wunderbare Here-String-Konstrukt hat , um solche dummen Dinge zu vermeiden.bc
bc
<<<
/bin/sh
(dash) anstelle von bash verwenden, aber dash hat dies nicht<<<
.time for i in {1..10000}; do : <<< ""; done
mittime for i in {1..10000}; do echo "" | : ; done
, Sie werden einen dramatischen Unterschied sehen. Dann hast du recht, ein Heredoc ist etwas schneller als ein Herestring. Es ist jedoch umständlicher, als Einzeiler zu schreiben.Die Befehlsersetzung speichert die Ausgabe eines Befehls in einer Variablen.
quelle