변수에 문자열 구성 요소 할당

변수에 문자열 구성 요소 할당

내가 이미 하고 있는 일을 더 스마트하게 할 수 있는 방법을 찾고 있습니다.

문자열이 있습니다: "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.

관련 정보