Bir bash komut dosyasında ((num # Hour)) ne anlama geliyor?


18

Aşağıdaki 2 satır içeren bir bash komut dosyası var:

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

2. satır ne yapar?

Yanıtlar:


24

10#Tabanı 10 kullanılarak sayısını artırmak için bunu söyler:

Başında 0 olan sabitler sekizlik sayılar olarak yorumlanır. Baştaki '0x' veya '0X' onaltılık anlamına gelir. Aksi takdirde, sayılar [base #] n biçimini alır; burada isteğe bağlı baz, aritmetik tabanı temsil eden 2 ile 64 arasında bir ondalık sayıdır ve n, bu bazdaki bir sayıdır. Taban # atlanırsa, taban 10 kullanılır. N belirtilirken, 9'dan büyük rakamlar bu sırada küçük harfler, büyük harfler '@' ve '_' ile temsil edilir. Taban 36'dan küçük veya ona eşitse, 10 ile 35 arasındaki sayıları temsil etmek için dönüşümlü olarak küçük ve büyük harfler kullanılabilir.

Örnekler:

Temel 16:

$ echo $((16#A))
10

Temel 8:

$ echo $((8#12))
10

Temel 2:

$ echo $((2#1010))
10

Steeldriver'ın işaret ettiği gibi, muhtemelen tarih komutundan olası önde gelen sıfırları işlemek için yapılıyor, ancak GNU tarihinin son sürümleriyle aşağıdakileri kullanarak daha kolay yapılabilir: date +%-H


2
Bu özel durumda, (en azından GNU'nun son sürümlerinde date) önde gelen sıfırların, printf tarzı bir -format değiştirici kullanılarak kaynakta bastırılabileceğini +%-H
belirtmek gerekebilir


@don_crissti - evet bu, onu bulamadım
steeldriver
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.