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...