1つの変数に複数のデータ項目を割り当てることはできますか?それでは、どのように配布されますか?

1つの変数に複数のデータ項目を割り当てることはできますか?それでは、どのように配布されますか?

私はLinux Bash / Shellを使用しており、複数の個々のデータ項目を変数に割り当てる方法を知りたいです。

たとえば、チームのリストです。各チームが求めるデータは、ホームマッチ総得点-遠征競技総得点-ホーム競技総得点-遠征競技総得点等である。

ベストアンサー1

シェルはbash単一の汎用変数に個々の文字列を格納し、配列に文字列のリストを格納し、関連配列に他の文字列に関連付けられた文字列を格納できます。たとえば、配列の配列または関連配列の関連配列(またはそれらの組み合わせ)を保存することはできません。

あなたが言及した特定のデータについては、できる連想配列などの操作を実行します。

declare -A goals

goals["teamA"]="0:2:3:4"
goals["teamB"]="1:3:3:3"
# etc.

または

declare -A goals

goals=(
    ["teamA"]="0:2:3:4"
    ["teamB"]="1:3:3:3"
    # etc.
)

次に、:必要に応じて分離された値を解析します。

for team in "${!goals[@]}"; do
    home_goals=$( cut -d : -f1 <<<"${goals[$team]}" )
    away_goals=$( cut -d : -f2 <<<"${goals[$team]}" )
    # etc.

    # use "$team", "$home_goals", "$away_goals" etc. here
done

...しかしそうです。たくさんこれはPerlやPythonなどの言語を使用してより効率的に実行できます。する任意にネストされたデータ構造が許可されます。

たとえば、Perlでは次のようになります。

my %goals = ( "teamA" => [ 0, 2, 3, 4 ],
              "teamB" => [ 1, 3, 3, 3 ],
              # etc.
            );

おすすめ記事