Shell讀取使用者輸入

來源:互聯網
上載者:User
14.2  讀取使用者輸入 14.2.1  變數

上一章我們談到如何定義或取消變數,變數可被設定為當前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 14.2.2  read命令

read命令是一個內建命令,用於從終端或檔案讀取輸入(參見表14-1)。read命令讀取一個輸入行,直至遇到分行符號。行尾的分行符號在讀入時將被轉換成一個Null 字元。如果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

      echo -e "Are you happy? \c"

  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 ${friends[2]}."

  -------------------------------------------------------

(輸出)

      $ nosy

      Are you happy? Yes

  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開始。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.