bashを使用してtxtファイルから変数を読み取る

bashを使用してtxtファイルから変数を読み取る

私は初めてバッシュに触れました。

テキスト照会からデータを読み取り、いくつかの変数を宣言するスクリプトを作成しようとしています。以下の例では、以下のようにタブ区切りのファイル「ab.txt」を読みます。

a->AA

b->BB

ここで -> はタブを意味します。

このデータを読み取るには、次のコードを使用しています。

#!/bin/bash
while read line
do
    tmp=(${line///})
    fieldName=${tmp[0]}

    case $fieldName in
    "a")
        a=${tmp[1]}
        ;;
    "b")
        b=${tmp[1]}
        ;;
    esac

done < "ab.txt"


echo "a:"
echo $a 

echo "b:"
echo $b

echo "concat a,b"
echo $a$b

echo "concat b,a"
echo $b$a

これを行うと、「a」と「b」は大丈夫ですが、aとbをつなげません!出力は次のとおりです。

a:
AA
b:
BB
concat a,b
BB
concat b,a
AA

私は何が間違っていましたか?

ベストアンサー1

@steedriverが問題を発見しました。 Windowsでは行末にエスケープ文字がありますが、Linuxではそうではありません。 Windowsで入力テキストファイルab.txtを作成したので、Linuxは追加の文字をa、b変数として読み込みます。私の解決策はdos2unixを使用してab.textを変換することで、これがうまくいきました。

おすすめ記事