【Shell指令碼學習9】Shell替換:Shell變數替換,命令替換,逸出字元

來源:互聯網
上載者:User

標籤:

如果運算式中包含特殊字元,Shell 將會進行替換。例如,在雙引號中使用變數就是一種替換,逸出字元也是一種替換。

舉個例子:

  1. #!/bin/bash
  2. a=10
  3. echo -e "Value of a is $a \n"

運行結果:

Value of a is 10

這裡 -e 表示對逸出字元進行替換。如果不使用 -e 選項,將會原樣輸出:

Value of a is 10\n


下面的逸出字元都可以用在 echo 中:

逸出字元 含義
\\ 反斜線
\a 警報,響鈴
\b 退格(刪除鍵)
\f 換頁(FF),將當前位置移到下頁開頭
\n 換行
\r 斷行符號
\t 水平定位字元(tab鍵) 
\v 垂直定位字元

可以使用 echo 命令的 -E 選項禁止轉義,預設也是不轉義的;使用 -n 選項可以禁止插入分行符號。

命令替換

命令替換是指Shell可以先執行命令,將輸出結果暫時儲存,在適當的地方輸出。

命令替換的文法:

  1. `command`

注意是反引號,不是單引號,這個鍵位於 Esc 鍵下方。

下面的例子中,將命令執行結果儲存在變數中:

  1. #!/bin/bash
  2. DATE=`date`
  3. echo "Date is $DATE"
  4. USERS=`who | wc -l`
  5. echo "Logged in user are $USERS"
  6. UP=`date ; uptime`
  7. echo "Uptime is $UP"

運行結果:

Date is Thu Jul  2 03:59:57 MST 2009Logged in user are 1Uptime is Thu Jul  2 03:59:57 MST 200903:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15
變數替換

變數替換可以根據變數的狀態(是否為空白、是否定義等)來改變它的值

可以使用的變數替換形式:

形式 說明
${var} 變數本來的值
${var:-word} 如果變數 var 為空白或已被刪除(unset),那麼返回 word,但不改變 var 的值。
${var:=word} 如果變數 var 為空白或已被刪除(unset),那麼返回 word,並將 var 的值設定為 word。
${var:?message} 如果變數 var 為空白或已被刪除(unset),那麼將訊息 message 送到標準錯誤輸出,可以用來檢測變數 var 是否可以被正常賦值。
若此替換出現在Shell指令碼中,那麼指令碼將停止運行。
${var:+word} 如果變數 var 被定義,那麼返回 word,但不改變 var 的值。


請看下面的例子:

#!/bin/bashecho ${var:-"Variable is not set"}echo "1 - Value of var is ${var}"echo ${var:="Variable is not set"}echo "2 - Value of var is ${var}"unset varecho ${var:+"This is default value"}echo "3 - Value of var is $var"var="Prefix"echo ${var:+"This is default value"}echo "4 - Value of var is $var"echo ${var:?"Print this message"}echo "5 - Value of var is ${var}"

運行結果:

  1. Variable is not set
  2. 1 - Value of var is
  3. Variable is not set
  4. 2 - Value of var is Variable is not set
  5. 3 - Value of var is
  6. This is default value
  7. 4 - Value of var is Prefix
  8. Prefix
  9. 5 - Value of var is Prefix

【Shell指令碼學習9】Shell替換:Shell變數替換,命令替換,逸出字元

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.