Saya mencoba untuk membandingkan dua string yang berisi angka heksadesimal dalam tes dasbor, satu yang memiliki nol di depan dan satu yang tidak:
hex_string_1: 0x02a0000b
hex_string_2: 0x2a0000b
Mencoba if [ ${hex_string_1} -eq ${hex_string_2} ] ; then ...
(atau sebaliknya, nol terkemuka sepertinya tidak penting) memberi saya kesalahan ini:
[: Illegal number: 0x02a0000b
Apakah ada cara sederhana untuk membandingkan ini sebagai angka, daripada misalnya menggunakan sed
untuk memformat ulang string?
Karena saya menggunakan dash
dan tidak bash
, [[
bukan merupakan pilihan.
UPDATE: Ini berfungsi (terima kasih ott!):
[ $(printf "%d" ${hex_string_1}) -eq $(printf "%d" ${hex_string_2}) ]
-eq
hanya diizinkan untuk apa yang diterima shell sebagai integer. Konversikan nilai dengan `iv1 = $ (printf"% d \ n "0x ...), lalu bandingkan.