![このsed式で変数をどのように拡張できますか? [コピー]](https://linux33.com/image/97301/%E3%81%93%E3%81%AEsed%E5%BC%8F%E3%81%A7%E5%A4%89%E6%95%B0%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E6%8B%A1%E5%BC%B5%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
次のテキストファイルがあります。
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