在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ 引用機制
通信工具
信號和 Traps
文件管理
vi 編輯器使用向導
替代
變量
環(huán)境
進程管理
實用工具
引用機制
Manpage 幫助
文件系統(tǒng)基礎知識
系統(tǒng)日志
循環(huán)
正則表達式和 SED
目錄
函數(shù)
管道和過濾器
特殊變量
輸入/輸出重定向
系統(tǒng)性能
用戶管理
循環(huán)控制
決策
什么是 UNIX ?
數(shù)組
什么是 Shell 腳本
基本操作符
文件權限

引用機制

元字符

UNIX Shell 提供有特殊意義的各種元字符,同時利用他們在任何 Shell 腳本,并導致終止一個字,除了引用。

舉個例子,在列出文件中的目錄時 ? 匹配一個一元字符,并且 * 匹配多個字符。下面是一個 Shell 特殊字符(也稱為元字符)的列表:

    * ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab

在一個字符前使用 \ ,它可能被引用(例如,代表它自己)。

例子

下面的例子,顯示了如何打印 * 或 ?

    #!/bin/sh

    echo Hello; Word

這將產(chǎn)生下面的結果。

    Hello
    ./test.sh: line 2: Word: command not found

    shell returned 127

現(xiàn)在,讓我們嘗試使用引用字符:

    #!/bin/sh

    echo Hello\; Word

這將產(chǎn)生以下結果:

    Hello; Word

$ 符號是一個元字符,所以它必須被引用,以避免被 Shell 特殊處理:

    #!/bin/sh

    echo "I have \$1200"

這將產(chǎn)生以下結果:

    I have $1200

是以下四種形式的引用:

Quoting Description
單引號 所有在這些引號之間的特殊字符會失去它們特殊的意義
雙引號 所有在這些引號之間的特殊字符會失去它們特殊的意義除了以下字符:
- $
- `
- \$
- \'
- \"
-\\
反斜杠 任何直接跟在反斜杠后的字符會失去它們特殊的意義
反引號 所有在這些引號之間的特殊字符會被當做命令而被執(zhí)行

單引號

考慮包含許多特殊的 Shell 字符的 echo 命令:

    echo <-$1500.**>; (update?) [y|n]

在每個特殊字符前加反斜杠會顯得異常繁瑣,并且不容易閱讀:

    echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]

有一個簡單的方法來引用一大組字符。將一個單引號(')放在字符串的開頭和結尾:

    echo '<-$1500.**>; (update?) [y|n]'

單引號內(nèi)的任何字符被引用正如每個字符前均加上一個反斜杠。所以,現(xiàn)在這個 echo 命令將正確地顯示。

如果要輸出的一個字符串內(nèi)出現(xiàn)一個單引號,你不應該把整個字符串置于單引號內(nèi),相反你應該在單引號前使用反斜杠(\)如下:

    echo 'It\'s Shell Programming'

雙引號

嘗試執(zhí)行以下 Shell 腳本。這個 Shell 腳本使用了單引號:

    VAR=ZARA
    echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'

這將輸出以下結果:

    $VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]

所以這不是你想顯示的內(nèi)容。很明顯,單引號防止變量替換。如果想替換的變量值和如預期那樣使引號起作用,那么就需要把命令放置在雙引號內(nèi),如下:

    VAR=ZARA
    echo "$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"

這將產(chǎn)生以下結果:

    ZARA owes <-$1500.**>; [ as of (07/02) ]

除以下字符外,雙引號使所有字符的失去特殊含義:

  • $ 參數(shù)替代。
  • 用于命令替換的反引號。
  • \$ 使美元標志在字面上顯示。
  • \` 使反引號在字面上顯示。
  • \" 啟用嵌入式雙引號。
  • \ 啟用嵌入式反斜杠。
  • 所有其他\字符在字面上顯示(而不是特殊意義)。

單引號內(nèi)的任何字符被引用正如每個字符前均加上一個反斜杠。所以,現(xiàn)在這個 echo 命令將正確地顯示。

如果要輸出的字符串內(nèi)出現(xiàn)一個單引號,你不應該把整個字符串置于單引號內(nèi),相反你應該在單引號前使用反斜杠(\)如下:

    echo 'It\'s Shell Programming'

反引號

置于反引號之間的任何 Shell 命令將執(zhí)行命令

語法

下面是一個簡單的語法,把任何 Shell 命令置于反引號之間:

例子

    var=`command`

例子

下面將執(zhí)行 date 命令,產(chǎn)生的結果將被存儲在 DATA 變量中。

    DATE=`date`

    echo "Current Date: $DATE"

這將輸出以下結果:

    Current Date: Thu Jul  2 05:28:45 MST 2009