bash 스크립트에서 ((num # Hour))는 무엇을 의미합니까?


18

다음 두 줄을 포함하는 bash 스크립트가 있습니다.

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

2 행은 무엇을합니까?

답변:


24

10#베이스 (10)를 사용하여 수를 확장하도록 지시합니다

앞에 0이있는 상수는 8 진수로 해석됩니다. 선행 '0x'또는 '0X'는 16 진수를 나타냅니다. 그렇지 않은 경우 숫자는 [base #] n 형식을 취합니다. 여기서 선택적 기준은 산술 기준을 나타내는 2에서 64 사이의 10 진수이며 n은 해당 기준의 숫자입니다. base #가 생략되면 base 10이 사용됩니다. n을 지정할 때 9보다 큰 숫자는 소문자, 대문자 '@'및 '_'의 순서로 표시됩니다. 밑이 36보다 작거나 같은 경우 소문자와 대문자를 서로 바꿔서 사용하여 10에서 35 사이의 숫자를 나타낼 수 있습니다.

예 :

베이스 16 :

$ echo $((16#A))
10

베이스 8 :

$ echo $((8#12))
10

베이스 2 :

$ echo $((2#1010))
10

steeldriver가 지적한 것처럼 date 명령에서 잠재적 인 선행 0을 처리하기 위해 수행 될 가능성이 있지만 최신 버전의 GNU 날짜에서는 다음을 사용하여 쉽게 수행 할 수 있습니다. date +%-H


2
이 특정한 경우에, 그것은 가치가 (적어도 GNU 최근 버전이 언급 될 수 dateprintf와 스타일 사용하여 소스에서 앞에 0을 억제 할 수있다) -형식 수정을+%-H
steeldriver


@don_crissti-그렇습니다, 나는 그것을 찾을 수 없었습니다
steeldriver
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.