新聞中心
Shell引用機(jī)制
元字符
UNIX Shell 提供有特殊意義的各種元字符,同時(shí)利用他們?cè)谌魏?Shell 腳本,并導(dǎo)致終止一個(gè)字,除了引用。

10年積累的網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有八公山免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
舉個(gè)例子,在列出文件中的目錄時(shí) ? 匹配一個(gè)一元字符,并且 * 匹配多個(gè)字符。下面是一個(gè) Shell 特殊字符(也稱為元字符)的列表:
* ? [ ] ' " \ $ ; & ( ) | ^ < > new-line space tab
在一個(gè)字符前使用 \ ,它可能被引用(例如,代表它自己)。
例子
下面的例子,顯示了如何打印 * 或 ? :
#!/bin/sh
echo Hello; Word
這將產(chǎn)生下面的結(jié)果。
Hello
./test.sh: line 2: Word: command not found
shell returned 127
現(xiàn)在,讓我們嘗試使用引用字符:
#!/bin/sh
echo Hello\; Word
這將產(chǎn)生以下結(jié)果:
Hello; Word
$ 符號(hào)是一個(gè)元字符,所以它必須被引用,以避免被 Shell 特殊處理:
#!/bin/sh
echo "I have \$1200"
這將產(chǎn)生以下結(jié)果:
I have $1200
是以下四種形式的引用:
| Quoting | Description |
|---|---|
| 單引號(hào) | 所有在這些引號(hào)之間的特殊字符會(huì)失去它們特殊的意義 |
| 雙引號(hào) | 所有在這些引號(hào)之間的特殊字符會(huì)失去它們特殊的意義除了以下字符: - $ - ` - \$ - \' - \" -\\ |
| 反斜杠 | 任何直接跟在反斜杠后的字符會(huì)失去它們特殊的意義 |
| 反引號(hào) | 所有在這些引號(hào)之間的特殊字符會(huì)被當(dāng)做命令而被執(zhí)行 |
單引號(hào)
考慮包含許多特殊的 Shell 字符的 echo 命令:
echo <-$1500.**>; (update?) [y|n]
在每個(gè)特殊字符前加反斜杠會(huì)顯得異常繁瑣,并且不容易閱讀:
echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]
有一個(gè)簡(jiǎn)單的方法來(lái)引用一大組字符。將一個(gè)單引號(hào)(')放在字符串的開頭和結(jié)尾:
echo '<-$1500.**>; (update?) [y|n]'
單引號(hào)內(nèi)的任何字符被引用正如每個(gè)字符前均加上一個(gè)反斜杠。所以,現(xiàn)在這個(gè) echo 命令將正確地顯示。
如果要輸出的一個(gè)字符串內(nèi)出現(xiàn)一個(gè)單引號(hào),你不應(yīng)該把整個(gè)字符串置于單引號(hào)內(nèi),相反你應(yīng)該在單引號(hào)前使用反斜杠(\)如下:
echo 'It\'s Shell Programming'
雙引號(hào)
嘗試執(zhí)行以下 Shell 腳本。這個(gè) Shell 腳本使用了單引號(hào):
VAR=ZARA
echo '$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'
這將輸出以下結(jié)果:
$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]
所以這不是你想顯示的內(nèi)容。很明顯,單引號(hào)防止變量替換。如果想替換的變量值和如預(yù)期那樣使引號(hào)起作用,那么就需要把命令放置在雙引號(hào)內(nèi),如下:
VAR=ZARA
echo "$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"
這將產(chǎn)生以下結(jié)果:
ZARA owes <-$1500.**>; [ as of (07/02) ]
除以下字符外,雙引號(hào)使所有字符的失去特殊含義:
- $ 參數(shù)替代。
- 用于命令替換的反引號(hào)。
- \$ 使美元標(biāo)志在字面上顯示。
- \` 使反引號(hào)在字面上顯示。
- \" 啟用嵌入式雙引號(hào)。
- \ 啟用嵌入式反斜杠。
- 所有其他\字符在字面上顯示(而不是特殊意義)。
單引號(hào)內(nèi)的任何字符被引用正如每個(gè)字符前均加上一個(gè)反斜杠。所以,現(xiàn)在這個(gè) echo 命令將正確地顯示。
如果要輸出的字符串內(nèi)出現(xiàn)一個(gè)單引號(hào),你不應(yīng)該把整個(gè)字符串置于單引號(hào)內(nèi),相反你應(yīng)該在單引號(hào)前使用反斜杠(\)如下:
echo 'It\'s Shell Programming'
反引號(hào)
置于反引號(hào)之間的任何 Shell 命令將執(zhí)行命令
語(yǔ)法
下面是一個(gè)簡(jiǎn)單的語(yǔ)法,把任何 Shell 命令置于反引號(hào)之間:
例子
var=`command`
例子
下面將執(zhí)行 date 命令,產(chǎn)生的結(jié)果將被存儲(chǔ)在 DATA 變量中。
DATE=`date`
echo "Current Date: $DATE"
這將輸出以下結(jié)果:
Current Date: Thu Jul 2 05:28:45 MST 2009 新聞名稱:創(chuàng)新互聯(lián)UNIX教程:UNIXShell引用機(jī)制
標(biāo)題路徑:http://m.5511xx.com/article/cocjjoc.html


咨詢
建站咨詢
