1つの読み取りコマンドで2つの変数を読み取り、別々にエコーする方法は?

1つの読み取りコマンドで2つの変数を読み取り、別々にエコーする方法は?

たとえば、

ユーザーはA = aと入力したいと思います。

私の注文は完全に間違っていると思います。


read -p "Enter something:" frsstring=secstring
echo $frsstring
echo $secstring
````````````````````````````````````````````````````````````




答え1

配列変数を使用bashして内部フィールド区切り文字(IFS)特殊変数を変更することで、=一般に単語を分割するための空白文字、タブ、および改行文字を含めることができます。

IFS='=' read -a arr -p "Enter something: "
echo "${arr[0]}"
echo "${arr[1]}"

またはシェルを使用することもできますパラメータ拡張文字列から最長のサフィックスとプレフィックスパターンを削除します。

read -p "Enter something: " str
echo "${str%%=*}" # remove longest suffix pattern `=*`
echo "${str##*=}" # remove longest prefix pattern `*=`

答え2

1つのコマンドでこれを行う方法がわかりませんが、行全体を読み、必要な変数に分割できます。

#!/bin/bash

read -p "Enter something:" line
frsstring=`echo "$line" | cut -f1 -d'='`
secstring=`echo "$line" | cut -f2 -d'='`


echo $frsstring
echo $secstring

参考になれば幸いです。

関連情報