Shell讀取使用者輸入

2021-05-27 09:44:48 字數 2532 閱讀 2707

14.2  讀取使用者輸入上一章我們談到如何定義或取消變數,變數可被設定為當前shell的區域性變數,或是環境變數。如果您的shell指令碼不需要呼叫其他指令碼,其中的變數通常設定為指令碼內的區域性變數(參見第13.10節「變數」)。

要獲取變數的值,在美元符後跟變數名即可。shell會對雙引號內的美元符後的變數執行變數擴充套件,單引號中的美元符則不會被執行變數擴充套件。

範例14-3

1   name="john doe" or declare name="john doe"   # local variable

2   export name="john doe"    # global variable

3   echo "$name" "$name"      # extract the value

read命令是乙個內建命令,用於從終端或檔案讀取輸入(參見表14-1)。read命令讀取乙個輸入行,直至遇到換行符。行尾的換行符在讀入時將被轉換成乙個空字元。如果read命令後未跟變數名,讀入的行將被賦給內建變數reply。也可以用read命令來中斷程式的執行,直至使用者輸入乙個回車鍵。要知道如何有效地使用read命令從檔案讀取輸入行,請參見14.6節的「迴圈控制命令」。如果帶-r選項,read命令將忽略反斜槓/換行符對,而把反斜槓作為行的一部分。read命令有4個控制選項:-a,-e,-p,-r②。

表14-1 read命令

格    式

含    義

read answer

從標準輸入讀取一行並賦值給變數answer

read first last

從標準輸入讀取一行,直至遇到第乙個空白符或換行符。把使用者鍵入的第乙個詞存到變數first中,把該行的剩餘部分儲存到變數last中

read

標準輸入讀取一行並賦值給內建變數reply

read –a arrayname

讀入一組詞,依次賦值給陣列arrayname③

(續表)  

格    式

含    義

read -e

在互動式shell命令列中啟用編輯器。例如,如果編輯器是vi,則可以在輸入行時使用vi命令③

read –p prompt

列印提示符,等待輸入,並將輸入賦值給reply變數③

read –r line

允許輸入包含反斜槓③

範例14-4

(指令碼)

#!/bin/bash

# scriptname: nosy

1   read answer

echo "$answer is the right response."

echo -e "what is your full name? \c"

2   read first middle last

echo "hello  $first"

echo –n "where do you work? "

3   read

4   echo i guess $reply keeps you busy!

5   read -p "enter your job title: "

6   echo "i thought you might be an $reply."

7   echo -n "who are your best friends? "

8   read -a friends

9   echo "say hi to $."

(輸出)

$ nosy

1   yes is the right response.

2   what is your full name? jon jake jones

hello jon

3   where do you work? the chico nut factory

4   i guess the chico nut factory keeps you busy!

5   enter your job title: accountant

6   i thought you might be an accountant.

7,8   who are your best friends?  melvin tim ernesto

9   say hi to ernesto.

說明1. read命令接收一行使用者輸入,將其值賦給變數answer。

2. read命令從使用者處接收輸入,將輸入的第乙個詞賦給變數first,將第二個詞賦給變數middle,然後將直到行尾的所有剩餘單詞都賦給變數last。

3. 從標準輸入讀取一行,賦值給內建變數reply。

4. 顯示變數reply的值。

5. 帶-p選項的read命令,顯示提示「enter your job title:」,把輸入行賦值給特定內建變數reply。

6. 在字串中顯示變數reply的值。

7. 請求使用者輸入。

8. 帶-a選項的read命令將輸入當作一組詞組成的陣列,陣列名為friends,讀入陣列的元素是melvin、tim和ernesto。

9. 顯示friends陣列的第3個元素。陣列下標從0開始。

Shell讀取使用者輸入

14.2 讀取使用者輸入上一章我們談到如何定義或取消變數,變數可被設定為當前shell的區域性變數,或是環境變數。如果您的shell指令碼不需要呼叫其他指令碼,其中的變數通常設定為指令碼內的區域性變數 參見第13.10節 變數 要獲取變數的值,在美元符後跟變數名即可。shell會對雙引號內的美元符後...

讀取使用者的輸入

我們如何讀取使用者的鍵盤 控制台 輸入呢?從鍵盤和標準輸入 os.stdin 讀取輸入,最簡單的辦法是使用 fmt 包提供的 scan 和 sscan 開頭的函式。請看以下程式 從控制台讀取輸入 package main import fmt var firstname,lastname,s str...

shell獲取使用者輸入

主題 再學shell之獲取使用者輸入echo n 不換行 和read命令 p 提示語句 n 字元個數 t 等待時間 s 不回顯 和 讀檔案 深入學習 1 基本讀取 read命令接收標準輸入 鍵盤 的輸入,或其他檔案描述符的輸入 後面在說 得到輸入後,read命令將資料放入乙個標準變數中。下面是rea...