(จำนวน # ชั่วโมง) หมายถึงอะไรในสคริปต์ทุบตี?


18

ฉันมีสคริปต์ทุบตีที่มี 2 บรรทัดต่อไปนี้:

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

บรรทัด 2 ทำอะไรได้บ้าง

คำตอบ:


24

การ10#บอกให้ขยายหมายเลขโดยใช้ฐาน 10:

ค่าคงที่ที่มี 0 นำหน้าจะถูกตีความเป็นตัวเลขฐานแปด เครื่องหมายนำหน้า '0x' หรือ '0X' หมายถึงเลขฐานสิบหก มิฉะนั้นตัวเลขจะอยู่ในรูปแบบ [base #] n โดยที่ตัวเลือกพื้นฐานคือตัวเลขทศนิยมระหว่าง 2 ถึง 64 ที่แสดงถึงฐานเลขคณิตและ n คือตัวเลขในฐานนั้น หากไม่ระบุ base # ระบบจะใช้ฐาน 10 เมื่อระบุ n ตัวเลขที่มากกว่า 9 จะถูกแสดงด้วยตัวอักษรตัวพิมพ์เล็กตัวอักษรตัวพิมพ์ใหญ่ '@' และ '_' ตามลำดับนั้น หากฐานมีค่าน้อยกว่าหรือเท่ากับ 36 ตัวอักษรตัวพิมพ์เล็กและตัวพิมพ์ใหญ่อาจถูกนำมาใช้แทนกันเพื่อแสดงตัวเลขระหว่าง 10 และ 35

ตัวอย่าง:

ฐาน 16:

$ echo $((16#A))
10

ฐาน 8:

$ echo $((8#12))
10

ฐาน 2:

$ echo $((2#1010))
10

ในขณะที่ steeldriver ชี้ให้เห็นสิ่งนี้มีแนวโน้มว่าจะถูกจัดการเพื่อจัดการศูนย์นำหน้าใด ๆ ที่อาจเกิดขึ้นจากคำสั่ง date แต่ด้วยเวอร์ชันล่าสุดของ GNU วันที่มันสามารถทำได้ง่ายขึ้นโดยใช้: date +%-H


2
ในกรณีพิเศษนี้มันอาจจะคุ้มค่าที่จะกล่าวถึงว่า (อย่างน้อยใน GNU รุ่นล่าสุดdate) เลขศูนย์สามารถระงับได้ที่แหล่งกำเนิดโดยใช้-ตัวปรับรูปแบบสไตล์การพิมพ์+%-H
steeldriver


@don_crissti - ใช่นั่นคือสิ่งนั้นฉันไม่สามารถหาได้
steeldriver
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.