Was ist der Hauptunterschied zwischen $(())
und expr
in Unix-ähnlichen Systemen?
Antwort
$(())
wird fast sicher in der Shell sein, die Sie verwenden. expr
kann ein externer Anruf sein
Was ist mit POSIX? – SuckLips
Beide werden von POSIX angegeben. Sie können vielleicht ein Szenario konstruieren, in dem es nützlich ist, einen Befehl anstatt einer integrierten Syntax für Arithmetik zu verwenden, aber im Großen und Ganzen '$ ((...))' 'hat' expr' für alle außer regulären Ausdrücken ersetzt. – chepner
expr
ist ein Überbleibsel aus den frühen Tagen der Bourne-Shell. Sie sollten expr
vermeiden, es sei denn, Sie sind gezwungen, Skripte zu erstellen, die mit älteren Implementierungen kompatibel sein müssen (vor POSIX). (Es ist noch nicht so lange her, dass Solaris sh
zum Beispiel in diese Kategorie fällt.)
@andlrc Das ist überhaupt nicht relevant. – 123
'$ (())' ist für Bash-Arithmetik. Ausdruck ist zum Auswerten von Ausdrücken, das kann arithmetisch oder Zeichenfolgen sein. Wenn Sie in der bash-man-Seite nach '$ (())' und der 'expr'-Manpage schauen, erfahren Sie alles, was beide Befehle können. – 123
Nicht nur Bash-Arithmetik. '$ (())' ist seit der Veröffentlichung im Jahr 1991 in der POSIX-Spezifikation enthalten. –