
- Unix/Linux 初學者教程
- Unix/Linux - 首頁
- Unix/Linux - 什麼是Linux?
- Unix/Linux - 入門指南
- Unix/Linux - 檔案管理
- Unix/Linux - 目錄
- Unix/Linux - 檔案許可權
- Unix/Linux - 環境變數
- Unix/Linux - 基本實用程式
- Unix/Linux - 管道與過濾器
- Unix/Linux - 程序
- Unix/Linux - 程序間通訊
- Unix/Linux - vi 編輯器
- Unix/Linux Shell程式設計
- Unix/Linux - Shell 指令碼
- Unix/Linux - 什麼是Shell?
- Unix/Linux - 使用變數
- Unix/Linux - 特殊變數
- Unix/Linux - 使用陣列
- Unix/Linux - 基本運算子
- Unix/Linux - 決策語句
- Unix/Linux - Shell 迴圈
- Unix/Linux - 迴圈控制
- Unix/Linux - Shell 替換
- Unix/Linux - 引號機制
- Unix/Linux - I/O 重定向
- Unix/Linux - Shell 函式
- Unix/Linux - 手冊頁幫助
- 高階 Unix/Linux
- Unix/Linux - 標準 I/O 流
- Unix/Linux - 檔案連結
- Unix/Linux - 正則表示式
- Unix/Linux - 檔案系統基礎
- Unix/Linux - 使用者管理
- Unix/Linux - 系統性能
- Unix/Linux - 系統日誌
- Unix/Linux - 訊號和陷阱
Unix/Linux - Shell 替換
什麼是替換?
當shell遇到包含一個或多個特殊字元的表示式時,它會執行替換操作。
示例
這裡,變數的列印值被其值替換。同時,"\n" 被換行符替換 -
#!/bin/sh a=10 echo -e "Value of a is $a \n"
您將收到以下結果。這裡-e選項啟用反斜槓轉義符的解釋。
Value of a is 10
以下是沒有-e選項的結果 -
Value of a is 10\n
以下是在 echo 命令中可使用的轉義序列:
序號 | 轉義符 & 說明 |
---|---|
1 |
\\ 反斜槓 |
2 |
\a 警報 (BEL) |
3 |
\b 退格 |
4 |
\c 抑制尾隨換行符 |
5 |
\f 換頁 |
6 |
\n 換行 |
7 |
\r 回車 |
8 |
\t 水平製表符 |
9 |
\v 垂直製表符 |
您可以使用-E選項停用反斜槓轉義符的解釋(預設值)。
您可以使用-n選項停用插入換行符。
命令替換
命令替換是一種機制,shell 透過該機制執行給定的命令集,然後將其輸出替換到命令的位置。
語法
當命令如下給出時,將執行命令替換:
`command`
執行命令替換時,請確保使用反引號,而不是單引號。
示例
命令替換通常用於將命令的輸出賦給變數。以下每個示例都演示了命令替換:
#!/bin/sh DATE=`date` echo "Date is $DATE" USERS=`who | wc -l` echo "Logged in user are $USERS" UP=`date ; uptime` echo "Uptime is $UP"
執行後,您將收到以下結果:
Date is Thu Jul 2 03:59:57 MST 2009 Logged in user are 1 Uptime is Thu Jul 2 03:59:57 MST 2009 03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15
變數替換
變數替換使shell程式設計師能夠根據變數的狀態來操作變數的值。
以下是所有可能的替換的表格:
序號 | 形式 & 說明 |
---|---|
1 |
${var} 替換var的值。 |
2 |
${var:-word} 如果var為空或未設定,則用var替換word。var的值不會改變。 |
3 |
${var:=word} 如果var為空或未設定,則將var設定為word的值。 |
4 |
${var:?message} 如果var為空或未設定,則將message列印到標準錯誤。這用於檢查變數是否正確設定。 |
5 |
${var:+word} 如果var已設定,則用var替換word。var的值不會改變。 |
示例
以下示例顯示了上述替換的各種狀態:
#!/bin/sh echo ${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 var echo ${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}"
執行後,您將收到以下結果:
Variable is not set 1 - Value of var is Variable is not set 2 - Value of var is Variable is not set 3 - Value of var is This is default value 4 - Value of var is Prefix Prefix 5 - Value of var is Prefix
廣告