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

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

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

答え1

(非常に単純な)例は次のとおりです。次のコードを含む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/

答え2

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

#!/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
    ...
    ...

答え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つのオプションのいずれかが入力されるまで、入力を続けます。

関連情報