文字列をエコーすると、その中に文字列があります。

文字列をエコーすると、その中に文字列があります。

次の内容を含むテキストファイルがあります。

Hello \"${USER}\"!
Today you drank ${COFFEE_COUNT} coffees.
See you tomorrow!

今、これらの文字列が割り当てられてエクスポートされるbashスクリプトを実行しています。ただし、スクリプトがファイルをエコーすると、文字列は変わりません。

... code ...

export COFFEE_COUNT="$(some code)"   #${USER} is set by default

... code ...

t=$(wc -l < ${scriptdir}/COFFEE);
for ((l=1;l<t;l++));
do
    echo $(sed -n "${l}{p;q;}" < ${scriptdir}/COFFEE);
done;

... code ...

猫も働かない

cat "${scriptdir}/COFFEE";

これを行う方法はありますか?

希望の出力:

Hello "username"!
Today you drank 3 coffees.
See you tomorrow!

ベストアンサー1

bashはコード内の変数のみを拡張し、データ(または拡張された)データの変数は拡張しません。代わりにシリコン

echo $(sed -n "${l}{p;q;}" < ${scriptdir}/COFFEE)

あなたはする必要があります

eval echo \""$(sed -n "${l}{p;q;}" < ${scriptdir}/COFFEE)"\"

おすすめ記事