내가 이미 하고 있는 일을 더 스마트하게 할 수 있는 방법을 찾고 있습니다.
문자열이 있습니다: "firstbit.secondbit.thirdbit.fourthbit.fifthbit.sixthbit"
마침표 사이의 내용은 변경되지만 문자열에서 분리 위치는 중요합니다.
문자열에는 "firstbit.secondbit.thirdbit"라는 세 부분만 포함되는 경우도 있습니다.
각 부분을 다른 변수에 할당해야 합니다. 그래서 저는 현재 다음과 같은 추악한 것을 사용하고 있습니다.
#!/bin/sh
var="firstbit.secondbit.thirdbit.fourthbit.fifthbit.sixthbit"
first="$(echo $var | cut -d'.' -f1 )"
second="$(echo $var | cut -d'.' -f2 )"
third="$(echo $var | cut -d'.' -f3 )"
fourth="$(echo $var | cut -d'.' -f4 )"
fifth="$(echo $var | cut -d'.' -f5 )"
sixth="$(echo $var | cut -d'.' -f6 )"
내가 원하는 것은 다음과 같습니다.
echo "$var" | (magic command to assign values to variables here) first second third fourth fifth sixth
그러면 다음을 수행할 수 있습니다.
echo "[$first]"
[첫번째]
echo "[$third]"
[세 번째]
등.
나는 이 시스템에서 명명된 변수를 선호하기 때문에 배열은 좋지 않습니다. 이 작업을 수행할 수 있는 무언가가 awk에 있을 수 있다고 생각하지 않을 수 없지만 이에 익숙하지 않습니다.
어떤 아이디어가 있나요?
답변1
IFS=. read -r first second third fourth fifth <<< "$var"
그러면 필드 구분 기호가 "."로 설정됩니다. 그런 다음 bash에게 콘텐츠에서 제공한 입력에서 명명된 변수를 읽도록 지시합니다 $var
.