두 숫자 사이에 있는 모든 16진수를 결정하는 작은 함수를 작성하고 싶습니다.
input.txt
:
2E25:2E30
원하는 출력:
2E25
2E26
2E27
2E28
2E29
2E2A
2E2B
2E2C
2E2D
2E2E
2E2F
2E30
KSH를 사용하는 쉘 스크립트에서 이를 달성해야 하며 운영 체제는 Solaris 9입니다.
답변1
쉘 내장 기능을 사용하는 방법은 다음과 같습니다.
$ IFS=: read start end < input.txt
$ for (( x=16#$start; x<=16#$end; x++ )); do printf "%X\n" $x; done
2E25
2E26
2E27
2E28
2E29
2E2A
2E2B
2E2C
2E2D
2E2E
2E2F
2E30
먼저 디스크에서 시작 및 끝 매개변수를 읽습니다. 그런 다음 반복하여 값을 16진수로 해석하고( Arithmetic Evaluation
구성에 대한 설명은 맨페이지 섹션 참조) 각 항목을 인쇄하여 16진수 형식으로 지정합니다.ksh
[base#]n
저는 ksh
이것을 자주 사용하지 않으며 이 문제를 해결하는 더 좋은 방법이 있을 수 있습니다.