이 sed 표현식 내에서 변수를 어떻게 확장할 수 있나요?

이 sed 표현식 내에서 변수를 어떻게 확장할 수 있나요?

다음과 같은 텍스트 파일이 있습니다.

melon = [2 2 4 5];
apple = [3 6 4 4];
lemon = [1 5 4 8];

그리고 명명된 변수를 bash 배열로 읽는 함수를 만들고 싶습니다. 이것이 내가 생각해낸 것입니다. 변수가 $FruitToParse확장되지 않기 때문에 작동하지 않습니다.

#!/bin/bash
set -e
set -u

function file_to_array {
    local FileToParse=${1}
    local FruitToParse=${2}

    for i in `cat ${FileToParse} | sed -n -e 's/.*${FruitToParse} = \[\(.*\)\];/\1/p'`); do
        echo ${i}
    done    
}

file_to_array fruits.txt apple

답변1

sed에서는 작은따옴표 대신 큰따옴표를 사용하세요.

$ bob="cool"; echo "bob is sad" | sed "s/sad/$bob/"
bob is cool

관련 정보