Als ich zuerst Shell Shell-Skripting gelernt, viele Beispiele sah ich let
für grundlegende Arithmetik verwendet, aber später fand ich heraus, dass einige Umgebungen nicht let
als eingebaut präsentieren , aber verwenden Sie stattdessen expr
(obwohl es deutlich langsamer ist).Lassen Sie vs Ausdruck gegen Doppelklammer Arithmetik in Shell
Es ist jedoch auch möglich, in vielen Shells doppelte Klammern zur arithmetischen Ausführung zu verwenden, beispielsweise $((54 + 102))
.
Da ich ein Skript für Portabilität schreibe, stellt dies ein Minenfeld von Möglichkeiten dar; Derzeit verwende ich zwei verschiedene Wrapper-Funktionen (eine für let
und eine für expr
) und mit einem schnellen Test zu entscheiden, welche im Rest meines Skripts zu verwenden.
Wie auch immer, ich möchte wissen, ob jemand die Kompatibilität jedes dieser drei arithmetischen Befehle (und aller anderen, die ich verpasst habe) erklären kann. Ich hoffe, dass die Doppelklammerform so weit verbreitet ist, dass ich Kompatibilitätsprüfungen einfach ablehnen kann, aber es ist schwer, danach zu suchen, also habe ich beschlossen, einfach hierher zu kommen und zu fragen, ob ich sicher bin.
Nur zu beachten Ich bin nur an regelmäßiger Arithmetik interessiert, ich denke, ich habe bereits die wenigen großen Zahlen behandelt, mit denen ich (möglicherweise) arbeiten muss.
shell == bash? –