Bash讀取用戶輸入

在本小節中,我們將學習如何從終端和腳本中讀取(獲取)用戶輸入。

要讀取Bash用戶輸入,需要使用內置的Bash命令read。它用於從用戶處獲取輸入並分配給變數。它僅從Bash shell中讀取一行。以下是read命令的語法。

read <variable_name>

以下是從Bash腳本讀取用戶輸入的示例:

示例1:

在此示例中,使用read命令從Bash腳本中讀取了單個變數和多個變數。

#!/bin/bash

# Read the user input

echo "Enter the your name: "
read user_name
echo "Your name is $user_name"
echo
echo "Enter your age, phone and email: "
read age phone email
echo "your age is:$age, phone is:$phone, email: $email "

將上面示例代碼保存到檔:read-input1.sh,執行後得到以下結果:

Bash讀取用戶輸入

如果不使用read命令傳遞變數,將會發生什麼?

如果我們不使用read命令傳遞變數,則可以在顯示輸入時傳遞一個名為REPLY的內置變數(應以$符號為首碼)。可以參考以下程式說明:

#!/bin/bash
# using read command without any variable
echo "Enter name : "
read
echo "Name : $REPLY"

將上面腳本代碼保存到檔:read-reply.sh,然後執行,得到以下結果:
REPLY內置變數

示例2:

在此示例中,使用-p PROMPT命令行選項在同一行上輸入,如下所示:

read -p PROMPT <variable_name>

示例程式:

#!/bin/bash

read -p "username:" user_var
echo "The username is: " $user_var

將上面腳本代碼保存到檔:read-prompt.sh,然後執行,得到以下結果:

同一行上輸入

示例3:

此示例將輸入保持在靜默模式,這樣命令行上的用戶輸入都將對其他用戶隱藏。
因此,通常使用命令行選項(-s-p)來傳遞用戶名並隱藏密碼(靜默模式),如下所示:

read -sp PROMPT <variable_name>

其中-s指示用戶將輸入保持在靜默模式,-p指示用戶在新的命令提示符下輸入。

示例代碼:

#!/bin/bash

read -p "username : " user_var
read -sp "password : " pass_var
echo
echo "username : " $user_var
echo "password : "  $pass_var

將上面腳本代碼保存到檔:read-sprompt.sh,然後執行,得到以下結果:

Bash讀取密碼輸入

注意:在腳本的第5行,echo命令輸出了空行,因為如果不留空,則它將在同一行上輸出密碼和用戶名。

因此,通過添加echo命令空白行來編寫腳本。

示例4

此示例是使用數組輸入多個輸入。因此,使用-a命令行選項,如下所示:

read -a <variable_name>

其中-a指示腳本讀取數組,而variable_name是引用的數組變數名稱。

示例程式

#!/bin/bash

# Reading multiple inputs using an array

echo "Enter names : "
read -a names
echo "The entered names are : ${names[0]}, ${names[1]}."

將上面腳本代碼保存到檔:read-array.sh,然後執行,得到以下結果:


上一篇: Bash變數 下一篇: Bash日期格式化