쉘 스크립트에서 각 번호를 개별적으로 찾아보고 액세스할 수 있기를 원합니다. 어떻게 해야 합니까?
답변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}
다소 혼란스러울 수 있습니다.