ユーザー入力に応答する簡潔な方法は何ですか?

ユーザー入力に応答する簡潔な方法は何ですか?

もちろん、このようなこともできます。

read var; if [[ $var = 'y' ]]; then echo "Yes"; fi

しかし、最初のステップをスキップして次のことをさらに実行する方法はありますか(理想的にはサブシェルは必要ありません):

if [[ $(read var) = 'y' ]]; then echo "Yes"; fi

もちろん、上記は追加しないとうまくいきませんが、echo次のよりクリーンでシンプルなものを探しています。

if [[ $(read var; echo "$var") = 'y' ]]; then echo "Yes"; fi

これが可能であれば理想的です。

if [[ read = 'y' ]]; then echo "Yes"; fi

ベストアンサー1

必要なものを達成するために機能を使用する方法:

user_input () {
    read var
    echo $var
}
if [ "$(user_input)" = 'y' ]; then echo "Yes"; fi

一番上には、値を読み込んでから再エコーするuser_inputという関数を定義しました。その後、if文は値を取得して「y」であることを確認できます。$(user_input)ユーザーがスペースを入力できないように引用符で囲み、スクリプトにエラーが発生しないようにしました。

おすすめ記事