変数への文字列コンポーネントの割り当て

変数への文字列コンポーネントの割り当て

私がすでにやっていることをよりスマートにする方法を探しています。

文字列があります: "firstbit.secondbit.thirdbit.fourthbit.fifthbit.sixthbit"

ピリオド間の内容は変更されますが、文字列内の区切り位置は重要です。

文字列には、「firstbit.secondbit.thirdbit」という3つの部分のみが含まれることもあります。

各部分を異なる変数に割り当てる必要があります。だから私は現在、次のような醜いものを使用しています。

#!/bin/sh
var="firstbit.secondbit.thirdbit.fourthbit.fifthbit.sixthbit"

first="$(echo $var | cut -d'.' -f1 )"
second="$(echo $var | cut -d'.' -f2 )"
third="$(echo $var | cut -d'.' -f3 )"
fourth="$(echo $var | cut -d'.' -f4 )"
fifth="$(echo $var | cut -d'.' -f5 )"
sixth="$(echo $var | cut -d'.' -f6 )"

私が望むものは次のとおりです。

echo "$var" | (magic command to assign values to variables here) first second third fourth fifth sixth

これにより、次のことができます。

echo "[$first]"

[最初]

echo "[$third]"

[3番目]

など。

私はこのシステムで名前付き変数を好むので、配列は良くありません。これを行うことができるものがawkにあるとは思わないかもしれませんが、それに慣れていません。

どんなアイデアがありますか?

ベストアンサー1

IFS=. read -r first second third fourth fifth <<< "$var"

これにより、フィールド区切り文字が「.」に設定されます。次に、bashにコンテンツから提供された入力から名前付き変数を読み取るように指示します$var

おすすめ記事