![쉘 스크립트에 숫자가 있는 경우 해당 숫자의 한 자리에 어떻게 액세스합니까? [폐쇄]](https://linux55.com/image/149065/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EC%88%AB%EC%9E%90%EA%B0%80%20%EC%9E%88%EB%8A%94%20%EA%B2%BD%EC%9A%B0%20%ED%95%B4%EB%8B%B9%20%EC%88%AB%EC%9E%90%EC%9D%98%20%ED%95%9C%20%EC%9E%90%EB%A6%AC%EC%97%90%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%95%A1%EC%84%B8%EC%8A%A4%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
쉘 스크립트에서 각 번호를 개별적으로 찾아보고 액세스할 수 있기를 원합니다. 어떻게 해야 합니까?
답변1
숫자는 기본적으로 다음과 같기 때문에 문자열로 생각할 수 있습니다*:
$ number=42
$ echo "${number:1:1}"
2
$ echo "${number:0:1}"
4
* 변수를 정수(예: Bash)로 선언하지 않는 한, 이 경우에는십진수로 변환그러면 문자열로 처리될 수 있습니다. 예를 들어 8진수는 다음과 같습니다.
$ declare -i number=042
$ echo "${number:0:1}"
3
$ echo "${number:1:1}"
4
이 중 어느 것도 *nix 쉘에서 직접 지원하지 않는 십진수 또는 부동 소수점 숫자에서는 작동하지 않습니다. 이를 위해 조사를 원합니다 bc
.
당신은 또한 수문자열을 문자 배열로 처리다양한 방법으로.
답변2
$ number=12345
$ echo $number, length ${#number}
12345, length 5
$ echo ${number:0:1}
1
$ echo ${number:0:2}
12
$ echo ${number:0:3}
123
$ echo ${number:0:4}
1234
$ echo ${number:0:5}
12345
$ echo ${number:1:4}
2345
$ echo ${number:2:3}
345
$ echo ${number:3:2}
45
$ echo ${number:4:1}
5
$ echo ${number:1}
2345
$ echo ${number:2}
345
$ echo ${number:3}
45
$ echo ${number:4}
5
$ echo ${number: -1}
5
$ echo ${number: -2}
45
$ echo ${number: -3}
345
$ echo ${number: -4}
2345
$ echo ${number:0:-4}
1
$ echo ${number:0:-3}
12
$ echo ${number:0:-2}
123
$ echo ${number:0:-1}
1234
이러한 가능한 모든 조합은 ${parameter:offset:length}
다소 혼란스러울 수 있습니다.