読み取りコマンド:ユーザーが何かを入力したことを確認する方法

ユーザーが何かを入力したことを確認するためにifelseステートメントを作成しようとしています。コマンドを実行する必要があります。そうでない場合は、ヘルプステートメントをエコーします。

コメント

  • read、通常、ユーザーはスクリプトを進める前にEnterを押す必要があります。その後、入力をテストできます…

回答

例(かなり簡単)は次のとおりです。次のコードを含むuserinputという名前のファイルが作成されます。

#!/bin/bash # create a variable to hold the input read -p "Please enter something: " userInput # Check if string is empty using -z. For more "help test" if [[ -z "$userInput" ]]; then printf "%s\n" "No input entered" exit 1 else # If userInput is not empty show what the user typed in and run ls -l printf "You entered %s " "$userInput" ls -l fi 

bashの学習を開始するには、次のリンクを確認することをお勧めします http://mywiki.wooledge.org/

回答

ユーザーが特定の文字列を入力したかどうかを知りたい場合は、次のことが役立ちます。

#!/bin/bash while [[ $string != "string" ]] || [[ $string == "" ]] # While string is different or empty... do read -p "Enter string: " string # Ask the user to enter a string echo "Enter a valid string" # Ask the user to enter a valid string done command 1 # If the string is the correct one, execute the commands command 2 command 3 ... ... 

回答

複数の選択肢が有効な場合は、正規表現に一致するwhile条件を作成します:

例:

#!/bin/bash while ! [[ "$image" =~ ^(rhel74|rhel75|cirros35)$ ]] do echo "Which image do you want to use: rhel74 / rhel75 / cirros35 ?" read -r image done 

3つの選択肢のいずれかを入力するまで、入力を求め続けます。

コメント

  • 問題が選択を次のセットに制限することであった場合は、bashselectステートメントを使用することをお勧めします。オプション。
  • @Kusalanandaは、-1を与えるのではなく、実際の例を示します。私の提案はうまくいきます。あなたの提案も良いことを示してください。 'できるので-1だけを与えないでください-'他の読者には本当に役に立ちません。
  • ここに'の例があります:select image in rhel74 rhel75 cirros35; do [ -n "$image" ] && break; done
  • @Kusalanandaこれは非常に役立ちます、ありがとう! $ imageがすでに設定されている場合は、[ -z "$image" ] && select ...を追加して、選択全体をスキップすることもできます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です