スペースで区切られた文字列を含む変数があります:
line="1 1.50 string"
その文字列をスペースで区切って分割し、その結果を配列に格納すると、次のようになります。
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}
出力
1
1.50
string
どこかで機能しない解決策を見つけました:
arr=$(echo ${line})
この後に上記の echo ステートメントを実行すると、次の結果が得られます。
1 1.50 string
[empty line]
[empty line]
私も試してみました
IFS=" "
arr=$(echo ${line})
結果は同じです。誰か助けてくれませんか?
ベストアンサー1
文字列を配列に変換するには、文字列から配列を作成し、IFS
デフォルトではスペース文字である (内部フィールド区切り文字) 変数に従って文字列が自然に分割されるようにします。
arr=($line)
read
または、コマンドの標準入力に文字列を渡すには、ヒアストリング( <<<
) 演算子:
read -a arr <<< "$line"
最初の例では、引用符を使用しないことが重要です。引用符を使用$line
すると、文字列が複数の要素に分割される可能性があるためです。