it-swarm-ja.com

((num#Hour))はbashスクリプトで何を意味しますか?

次の2行を含むbashスクリプトがあります。

Hour=$(date +"%H")
Hour=$((10#$Hour))

2行目は何をしますか?

18
Mohsen Abasi

10#は、基数10を使用して数を拡張するように指示します。

先頭が0の定数は、8進数として解釈されます。先頭の「0x」または「0X」は16進数を示します。それ以外の場合、数値の形式は[base#] nです。オプションの基数は、算術基数を表す2〜64の10進数で、nはその基数の数値です。 base#を省略すると、base 10が使用されます。 nを指定すると、9より大きい数字は、小文字、大文字の「@」、「_」の順に表示されます。 baseが36以下の場合、小文字と大文字を同じ意味で使用して、10〜35の数値を表すことができます。

例:

ベース16:

$ echo $((16#A))
10

ベース8:

$ echo $((8#12))
10

ベース2:

$ echo $((2#1010))
10

Steeldriverが指摘するように、これは日付コマンドからの潜在的な先行ゼロを処理するために行われている可能性がありますが、GNU日付の最近のバージョンでは、以下を使用して簡単に行うことができます:date +%-H

24
jesse_b