Wie Teile ich die Ausgabe eines Befehls durch zwei, und speichern das Ergebnis in einer bash-variable?
Sagen, wenn ich wollte, mit diesem Befehl:
(cat file | wc -l)/2
auf und speichern es in einer Variablen wie Mitte, wie würde ich es tun?
Ich weiß, das ist einfach nicht der Fall
$middle=$(cat file | wc -l)/2
so, wie würde ich es tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
$()
anstelle von backticks? Auch ist es gut, dass Sie korrigiert die nutzlose Verwendung voncat
, aber Sie ersetzt es mit einem nutzlosen verwenden der Umleitung.wc
akzeptiert Dateinamen als Argumente. Auchwc
Ausgänge der Dateiname muss abgestreift werden, bevor Sie tun können, die division.wc
. nurawk
tun.Diese stützt sich auf die Bash zu können-Referenz das erste element eines Arrays mit skalaren syntax und das ist nicht word splitting auf Leerraum standardmäßig.
Kann die zweite Zeile auch:
wc -l < file
wird nur die Nummer der Zeile count. FYI.Beim zuweisen von Variablen, die Sie nicht verwenden die $
Hier ist was ich kam mit:
Den doppelten Klammern sind wichtig in der zweiten Zeile. Ich bin mir nicht sicher, warum, aber ich denke, es sagt Bash, dass es nicht eine Datei?
Arithmetic Expressions
Abschnitt von der Mann-Seite.Verwendung von awk.
können Sie auch Ihre eigenen "wc" einfach mit der shell.