Ich suchte nach einer Möglichkeit, Hexadezimalzahlen über die Befehlszeile zu konvertieren, und fand heraus, dass es eine sehr einfache Methode gibt echo $((0x63))
.
Es funktioniert großartig, aber ich bin ein wenig verwirrt darüber, was hier passiert.
Ich weiß, $(...)
ist normalerweise eine Unterschale, in der der Inhalt vor dem äußeren Befehl ausgewertet wird.
Ist es in dieser Situation immer noch eine Unterschale? Ich denke nicht, dass dies bedeuten würde, dass die Sub-Shell nur auswertet, (0x63)
was kein Befehl ist.
Kann jemand den Befehl für mich auflösen?
$((...))
Konflikten mit der Befehlsersetzung daran erinnern müssen,echo "$( (echo x; echo y) | tr xy yx)"
statt zu schreibenecho "$((echo x; echo y) | tr xy yx)"
(auch wenn einige Shells das letztere weiterhin akzeptieren, YMMV).