ユーザー入力に応じて、=記号の前後に単語を表示するコードを作成しようとしています。たとえば、ユーザーが入力すると、Name=john
出力は次のようになります。
The variable is called: Name
The variable value is: john
=記号の後に値がない場合
The variable is called: Name
The variable value is:
Invalid entry
ユーザー入力は次の変数に保存されます。setting
echo -e "The variable name of the setting is:" $setting | cut -d "=" -f1
value=$setting
echo -e "The variable value of the setting is:" $value | cut -d "=" -f2
case $value in
"") echo "Invalid setting"
esac
break
grepを使ってみましたが、同じ問題が発生しました。 2行目のテキストは表示されません。つまり、空の行、またはこの場合はjohnという単語のみが使用されます。
ベストアンサー1
これをvalue
フルユーザー入力に設定してsetting
から文字列を切り取りecho
ますが、何も変更されないため、空であることをvalue
テストしても文字列全体が含まれます。
代わりに変数拡張を提案しますcut
。
printf '%s\n' "The variable name of the setting is: ${setting%%=*}"
value="${setting#*=}"
printf '%s\n' "The variable value of the setting is: $value"
case $value in
"") echo >&2 "Invalid setting";;
esac