如何擴展此 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

相關內容