1

2 つの数値を文字列として変数 A と B に取得します。

A は次の形式になります。

「10」または「0x0A」または「0x0a」

つまり、A は 10 進数または 16 進数 (接頭辞 0x 付き) のいずれかになります。

B は次の形式になります。

「image-000A」または「image-000a」

B は常に「image-」の後に 4 桁の 16 進数が続きます。

2 つの数値を比較して、B > A かどうかをテストする必要があります。シェル スクリプトでこれを行うにはどうすればよいですか?

4

1 に答える 1

2

1 を掛けるだけで 16 進数を 10 進数に変換できます。

rojo@pico:~$ t=0x0a
rojo@pico:~$ echo $t
0x0a
rojo@pico:~$ echo $(( $t * 1 ))
10

画像から 16 進値をスクレイピングするのは少し複雑ですが、同じように機能します。

rojo@pico:~$ t=image-000a
rojo@pico:~$ echo $t
image-000a
rojo@pico:~$ echo $(( 0x${t##image-} * 1 ))
10

はから${t##image-}剥がれimage-$tを残し000aます。

于 2013-02-20T18:42:12.523 に答える