次の内容を含むテキストファイルがあります。
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)"\"