ファイルを解析するときにトークンを挿入する - bash

ファイルを解析するときにトークンを挿入する - bash

次の構造のファイルがあります。

ma${token}jid-azimi-865131021
javad-ya${token}rip-865132012

これは私のプログラムです:

IFS="-"

token="12345678"

cat input.txt | while read col1 col2 col3; do
    echo ${col1}
    echo ${col2}
    echo ${col3}
    echo "********************************"
done 

${token}ファイルの読み込み中に挿入したいです。トークンは動的単語なので、ファイル内で毎回変更することはできません。それで、${token}一度ファイルに追加してみました。ただし、プログラムの出力は次のようになります。

ma${token}jid
azimi
865131021
********************************
javad
ya${token}rip
865132012
********************************

なぜこれが起こるのですか?ma${token}jid次のように展開して挿入する必要がありますecho ma${token}jid12345678

ベストアンサー1

エコーされた変数は変数拡張の影響を受けません。eval前に追加します。単純な場合は機能できますが、echo文字列に引用符または引用符が含まれていると|壊れる可能性があります。または、次のものを交換してください。

echo ${col1/'${token}'/$token}

おすすめ記事