Szukałem sposobu konwersji szesnastkowej za pomocą wiersza poleceń i odkryłem, że jest to bardzo łatwa metoda echo $((0x63))
.
Działa świetnie, ale jestem trochę zdezorientowany, co się tutaj dzieje.
Wiem, że $(...)
jest to zwykle podpowłoka, której zawartość jest oceniana przed poleceniem zewnętrznym.
Czy w tej sytuacji jest to podpowłoka? Nie sądzę, by to oznaczało, że podpowłoka ocenia tylko, (0x63)
co nie jest poleceniem.
Czy ktoś może złamać polecenie dla mnie?
$((...))
powoduje konflikt z zastępowaniem poleceń, należy pamiętać o pisaniuecho "$( (echo x; echo y) | tr xy yx)"
zamiastecho "$((echo x; echo y) | tr xy yx)"
(nawet jeśli niektóre powłoki nadal akceptują to drugie, YMMV).$(( ))
wytwarzać produkty, na które wpływa podział tekstu lub globowanie?IFS=9; echo $((0x63))
. Zobacz także Implikacje bezpieczeństwa dla zapomnienia o cytowaniu zmiennej w powłokach bash / POSIX (What about [ $# -gt 1 ]
sekcja)To nie jest podpowłoka, ale ocena arytmetyczna. Od
man bash
:źródło
((...))
nie jest taki sam jak$((...))
. Obie dokonują oceny arytmetycznej, ale ta ostatnia jest zastępowana przez wynikową wartość jako ciąg.