명령 출력의 변수 이름

명령 출력의 변수 이름

일부 문자열이 있고 콜론 ":"으로 분할하여 변수에 왼쪽 부분의 이름과 오른쪽 부분의 값을 할당하고 싶습니다. 예를 들어:

echo "Title: Some title" | sed 's/:.*//'

원하는 변수 이름 "Title"을 입력하고 다음을 수행합니다.

echo "Title: Some title" | sed 's/.*: //'

"일부 헤더"라는 값을 알려주세요.

내 질문은 위 명령의 출력을 통해 "Title"이라는 변수를 할당하는 방법입니다.

값을 할당할 수 있지만 $(echo "Title: Some title" | sed 's/.*: //)이름을 할당하는 방법을 찾을 수 없습니다.

답변1

이것은 다소 이상한 일이지만 다음과 같은 export문장을 구성할 수 있을 것 같습니다.

$ export $(echo "Title: Some title" | sed 's/:.*//')="$(echo "Title: Some title" | sed 's/.*: //')"
$ echo $Title
Some title

답변2

사용 방법과 bash 버전에 따라 다음을 사용하는 것이 더 나을 수도 있습니다.연관 배열.

실패하면 당신에게 제안합니다가짜.

완전성을 기하기 위해 실제로 를 사용하여 이 작업을 수행할 수 있습니다 eval. eval은 위험하므로 꼭 필요한 경우가 아니면 사용해서는 안 됩니다.

eval "${string/: /=\"}\""

답변3

아마도 이것은 예상된 결과를 줄 것입니다.

#!/bin/sh
export Variablename="$(echo "Title: Some title" | awk -F':' '{ print $1}')=\"$(echo "Title: Some title" | awk -F':' '{ print $2 }' | sed -e 's/^[[:blank:]]*//g')\""

산출:

title="일부 제목"

관련 정보