BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

Bash/シェルスクリプトでユーザー入力を求める方法

この短いチュートリアルでは、Bash/Shellスクリプトからの入力入力をユーザーに求める方法を説明します。習得も実行も簡単なので、読み進めてください。

読む コマンド

シェルスクリプトでユーザー入力を読み取るには、適切な名前の readを使用します 指図。構文は次のとおりです。

read OPTIONS VARIABLES

注:

  • 読む コマンドは、標準入力から行を読み取ります その入力をフィールドに分割します
    • 通常、標準入力 はキーボードからの入力を備えた端末ですが、入力をパイプまたはリダイレクトして読み取りすることもできます。 コマンド
    • ユーザーの観点からは、プロンプトが表示され、何かを入力してからENTERキーを押す必要があります
  • オプション 以下の表のオプションフラグのリストである必要があります。これにより、読み取りの動作が変更されます。 コマンド
  • 変数 スペースで区切られたスクリプトに渡される値のリストです
    • -pの場合 オプションを使用すると、これをプロンプトの一致リストと組み合わせて、ユーザーに何を入力する必要があるかを伝えることができます
    • 複数の変数として スペースで区切って指定できます。スペースやその他の特殊文字を含む、入力する値はすべて引用符で囲む必要があります。
read 一般的に使用されるオプション
-配列 読み取った単語を、ゼロから始まる配列変数ARRAYの順次インデックスに割り当てます
-pプロンプト 読み取りを試みる前に、末尾の改行なしで文字列PROMPTを出力します
-r バックスラッシュで文字をエスケープしないようにしてください
-s 端末からの入力をエコーし​​ないでください
-tタイムアウト TIMEOUT秒以内に入力の完全な行が読み取られない場合、タイムアウトしてエラーを返します

いつものように、読むのユーザーマニュアルを入手できます。 次のコマンドを実行して、使用可能なオプションの完全なリストを含むコマンド:

man read

読み取りコマンドを使用した入力のプロンプト

readの使用例を次に示します。 Bash/Shellスクリプトでユーザー入力を受け入れるコマンド。

しかし最初に…

Linuxシェルスクリプトの「#!」とは何ですか?

入力を取得するだけ

これはコマンドの最も簡単な使用法です–入力から単一の値を読み取るだけです:

#!/bin/bash

read word
echo You just typed $word

上記では、入力は $ wordという変数に読み込まれます 、次に echoを使用して表示されます 指図。繰り返しになりますが、プロンプトは表示されません –画面が停止し、ユーザーが何かを入力するのを待ってから、Enterキーを押します–その後、スクリプトは指定された入力で再開します。

複数の入力値を取得するには、スペースで区切ってコマンドに変数を追加します。

#!/bin/bash

read word1 word2
echo You just typed $word1 followed by $word2

メッセージによる入力のプロンプト

画面を一時停止して入力を待つことは、実際にはそれほどユーザーフレンドリーではありません。通常、ユーザーが入力する内容(ユーザー名やパスワードなど)をユーザーに伝えたいと思うでしょう。この次の例はまさにそれを行います:

#!/bin/bash

read -p 'Username: ' username
read -sp 'Password: ' password
echo Your username is $username, we will not display your password

上記、 -p オプションは、プロンプトを表示するために使用されます–各変数の値に何を入力する必要があるかをユーザーに伝えるメッセージが表示されます。

-sも表示されます パスワード変数に使用されるオプション。入力された入力を無音にして表示されないようにします。

メッセージによる複数入力のプロンプト

プロンプトを表示してから、複数の値を読み取ることができます:

#!/bin/bash

read -p 'Please type your first and last name: ' first last
echo Your name is $first $last

はい/いいえのプロンプト

whileループを使用して、ユーザーに簡単なはい/いいえの質問をする方法は次のとおりです。 およびcaseステートメント yで始まる文字列 またはY はいと解釈されます *、 nで始まる文字列 またはN いいえとして解釈されます :

#!/bin/bash
while true; do
    read -p "Do you wish to perform this action?" yesno
    case $yesno in
        [Yy]* ) 
            echo "You answered yes"
        ;;
        [Nn]* ) 
            echo "You answered no, exiting"
            exit
        ;;
        * ) echo "Answer either yes or no!";;
    esac
done

スクリプトはnoまで実行されます 受信–簡単に変更して、ユーザーにアクションの実行を促すことができます。


  1. Windows 10にBash(Linuxシェル)をインストールして使用する方法[チュートリアル]

    WindowsでLinuxシェルを設定して使用する方法は次のとおりです– Linux用Windowsサブシステムを使用します ( WSL 。 このチュートリアルは、2020年以降の最新バージョンのWindows10を対象としています。古いソフトウェアを使用するべきではないため、古いバージョンのWindows10でWSLを使用する方法やWindows8/7 / XP/3.1の他の方法については説明しません。 Windowsを使用する必要がある場合は、セキュリティパッチをまだ受けているバージョンを使用してください! WSL は優れたツールであり、Linuxを離れたことがないかのよ

  2. Windows 10 に Linux Bash シェルをインストールする方法

    Bash Shell は、非常に長い間 Linux の一部であった単純なコマンドライン ユーティリティであり、現在、Microsoft はそれを Windows 10 に直接追加しています。これは、仮想マシンでも、コンテナーでも、Windows 用にコンパイルされたソフトウェアでもありません。代わりに、Linux ソフトウェアを実行するための完全な Windows サブシステムであり、Windows で Android アプリを実行するための Microsoft の廃止された Project Astoria に基づいています。 これで、デュアルモード オペレーティング システムとは何かがわか