亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 14917 | 回復(fù): 11
打印 上一主題 下一主題

shell基礎(chǔ)第十五篇-引號 [復(fù)制鏈接]

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-11-19 21:57 |只看該作者 |倒序瀏覽
本帖最后由 L_kernel 于 2010-11-19 22:11 編輯

上一章介紹了變量和替換操作,在腳本中執(zhí)行變量替換時最容易犯的一個錯誤就是由于
引用錯誤。在命令行中引用是很重要的。
本章內(nèi)容有:
• 引用的必要性。
• 雙引、單引和反引號。
• 使用反斜線實現(xiàn)屏蔽。

引用必要性
這里只講述引用的基本規(guī)則。因為使用引用的例子很多。本書接下來的兩個部分將一一
予以講述。腳本中執(zhí)行行操作時, s h e l l將對腳本設(shè)置予以解釋。要采取一種方法防止s h e l l這
樣做,即使用引用號,包括各式引用或使用反斜線。
一些用戶在對文本字符串進(jìn)行反饋操作時覺得使用引用很麻煩。有時不注意,只引用了
一半,這時問題出現(xiàn)了。最好在反饋文本字符串時使用雙引號。下面是各種引用的例子。
  1. [mutter@localhost ~] $ echo Hit the star button to exit *
  2. Hit the star button to exit child.sh father.sh findfile.sh param2.sh param.sh who_is.sh
復(fù)制代碼
文本返回了,但由于未使用雙引號, *被s h e l l誤解,s h e l l認(rèn)為用戶要做目錄列表。用雙引
號得結(jié)果如下:
[mutter@localhost ~] $ echo "Hit the star button to exit *"
Hit the star button to exit *


這樣就不會有誤解產(chǎn)生。表1 5 - 1列出各種引用類型。
表15-1 shell引用類型
" " 雙引號` 反引號
' ' 單引號\ 反斜線


雙引號
使用雙引號可引用除字符$、`、\外的任意字符或字符串。這些特殊字符分別為美元符號,
反引號和反斜線,對s h e l l來說,它們有特殊意義。如果使用雙引號將字符串賦給變量并反饋
它,實際上與直接反饋變量并無差別。
  1. [mutter@localhost ~] $ STRING="MAY DAY, MAY DAY, GOING DOWN"
  2. [mutter@localhost ~] $ echo "$STRING"
  3. MAY DAY, MAY DAY, GOING DOWN
  4. [mutter@localhost ~] $ echo $STRING
  5. MAY DAY, MAY DAY, GOING DOWN
復(fù)制代碼
現(xiàn)在假定要設(shè)置系統(tǒng)時間輸出到變量m y d a t e。
  1. [mutter@localhost ~] $ MYDATE="date"
  2. [mutter@localhost ~] $ echo $MYDATE
  3. date
復(fù)制代碼
因為s h e l l將" "符號里的字符串賦予變量m y d a t e,d a t e已沒有特定意義,故此變量只保存單
詞d a t e。
如果要查詢包含空格的字符串,經(jīng)常會用到雙引號。以下使用g r e p抽取名字“Davey Wi r e”,
因為沒有加雙引號, g r e p將“D a v e y”認(rèn)作字符串,而把“Wi r e”當(dāng)作文件名。
  1. [mutter@localhost ~] $ grep Davey Wire /etc/passwd
  2. grep: Wire: No such file or directory
  3. [mutter@localhost ~] $ grep "Davey Wire" /etc/passwd
復(fù)制代碼
要解決這個問題,可將字符串加雙引號。這樣s h e l l會忽略空格,當(dāng)使用字符時,應(yīng)總是
使用雙引號,無論它是單個字符串或是多個單詞。

在一個反饋的文本行里可以使用雙引號將變量引起來。下面的例子中, s h e l l反饋文本行,
遇到符號$,知道這是一個變量,然后用變量值b o y替換變量$ B O Y。
  1. [mutter@localhost ~] $ echo " The $BOY did well"
  2. The boy did well
  3. [mutter@localhost ~] $ echo " The "$BOY" did well"
  4. The boy did well
復(fù)制代碼
單引號與雙引號類似,不同的是s h e l l會忽略任何引用值。換句話說,如果屏蔽了其特殊
含義,會將引號里的所有字符,包括引號都作為一個字符串。使用上一個例子,結(jié)果如下:
  1. [mutter@localhost ~] $ GIRL='girl'
  2. [mutter@localhost ~] $ echo "The '$GIRL' did well"
  3. The 'girl' did well
復(fù)制代碼
反引號
反引號用于設(shè)置系統(tǒng)命令的輸出到變量。s h e l l將反引號中的內(nèi)容作為一個系統(tǒng)命令,并
執(zhí)行其內(nèi)容。使用這種方法可以替換輸出為一個變量。反引號可以與引號結(jié)合使用。下面將
舉例說明。
下面的例子中, s h e l l試圖替代單詞h e l l o為系統(tǒng)命令并執(zhí)行它,因為h e l l o腳本或命令不存
在,返回錯誤信息。
  1. [mutter@localhost ~] $ echo `hello`
  2. bash: hello: command not found
復(fù)制代碼
  1. [mutter@localhost ~] $ echo `date`
  2. Sat Nov 20 21:40:47 CST 2010
復(fù)制代碼
這次命令有效,s h e l l正確執(zhí)行。
下面將命令輸出設(shè)置為變量m y d a t e,時間格式如下:
  1. [mutter@localhost ~] $ date +%A" the "%e" of "%B" "%Y
  2. Saturday the 20 of November 2010
  3. [mutter@localhost ~] $ mydate=`date +%A" the "%e" of "%B" "%Y`
  4. [mutter@localhost ~] $ echo $mydate
  5. Saturday the 20 of November 2010
  6. [mutter@localhost ~] $ mydate=`date`
  7. [mutter@localhost ~] $ echo $mydate
  8. Sat Nov 20 21:43:06 CST 2010
復(fù)制代碼
另一個例子中,將反引號嵌在雙引號里:
  1. [mutter@localhost ~] $ echo "The date today is `date`"
  2. The date today is Sat Nov 20 21:44:03 CST 2010
  3. [mutter@localhost ~] $ echo "There are `who | wc -l` users on the system"
  4. There are 3 users on the system
復(fù)制代碼
上面的例子中,打印字符串后, s h e l l遇到反引號,將其看作一條命令執(zhí)行它。

如果下一個字符有特殊含義,反斜線防止s h e l l誤解其含義,即屏蔽其特殊含義。下述字
符包含有特殊意義: & * + ^ $ ` " | ?。
假定e c h o命令加*,意即以串行順序打印當(dāng)前整個目錄列表,而不是一個星號*。
  1. [mutter@localhost ~] $ echo *
  2. child.sh father.sh findfile.sh param2.sh param.sh who_is.sh
復(fù)制代碼
為屏蔽星號特定含義,可使用反斜線。
  1. $ echo \*
  2. *
復(fù)制代碼
上述語句同樣可用于$ $命令, s h e l l解釋其為現(xiàn)在進(jìn)程I D號,使用反斜線屏蔽此意,僅打
印$ $。
  1. [mutter@localhost ~] $ echo $
  2. 7906
  3. [mutter@localhost ~] $ echo \$
  4. $
復(fù)制代碼
在打印字符串時要加入八進(jìn)制字符( A S C I I相應(yīng)字符),必須在前面加反斜線,否則s h e l l
將其當(dāng)作普通數(shù)字處理。
  1. [mutter@localhost ~] $ echo " This is a copyright 251 sign"
  2. This is a copyright 251 sign
復(fù)制代碼
[mutter@localhost ~] $ echo -e " This is a copyright \0373 sign"
This is a copyright

  1. [quote]Linux下需要使用\0NNN的八進(jìn)制的方式才可以把特殊字符copyright的字符顯示出來。[/quote]

  2. 使用命令e x p r時,用*表示乘法會出現(xiàn)錯誤,在*前加上反斜線才會正確。
  3. [code][mutter@localhost ~] $ expr 12 * 12
  4. expr: syntax error
  5. [mutter@localhost ~] $ expr 12 \* 12
  6. 144
復(fù)制代碼
在e c h o命令中加入元字符,必須用反斜線起屏蔽作用。下面的例子要顯示價格$ 1 9 . 9 9。其
中$屏蔽與不屏蔽將產(chǎn)生不同的結(jié)果。
  1. [mutter@localhost ~] $ echo "That video looks a good price for $19.99"
  2. That video looks a good price for 9.99
  3. [mutter@localhost ~] $ echo "That video looks a good price for \$19.99"
  4. That video looks a good price for $19.99
復(fù)制代碼
使用反斜線屏蔽$,可得更好的結(jié)果。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
2 [報告]
發(fā)表于 2010-11-19 22:02 |只看該作者
在引用時會遇到一些問題且經(jīng)常出錯。我在使用引用時遵循兩條規(guī)則:
1) 反饋字符串用雙引號;但不要引用反饋本身。
2) 如果使用引用得到的結(jié)果不理想,再試另一種,畢竟只有三種引用方式,可以充分嘗
試。
本章完畢~~

論壇徽章:
0
3 [報告]
發(fā)表于 2010-11-19 23:22 |只看該作者
mark下先

論壇徽章:
20
CU大牛徽章
日期:2013-04-17 11:48:26羊年新春福章
日期:2015-03-10 22:39:202015年中國系統(tǒng)架構(gòu)師大會
日期:2015-06-29 16:11:282015亞冠之平陽省
日期:2015-07-31 09:19:042015七夕節(jié)徽章
日期:2015-08-21 11:06:17IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-09-30 06:20:002015亞冠之柏太陽神
日期:2015-10-19 20:29:5915-16賽季CBA聯(lián)賽之天津
日期:2016-11-29 14:03:4315-16賽季CBA聯(lián)賽之北控
日期:2016-12-24 20:51:492015年辭舊歲徽章
日期:2015-03-03 16:54:15雙魚座
日期:2015-01-12 20:58:532014年中國系統(tǒng)架構(gòu)師大會
日期:2014-10-14 15:59:00
4 [報告]
發(fā)表于 2011-06-14 08:30 |只看該作者
總結(jié)得相當(dāng)?shù)牟诲e啊

論壇徽章:
0
5 [報告]
發(fā)表于 2011-06-14 21:35 |只看該作者
好文……Kernel兄威武……

論壇徽章:
0
6 [報告]
發(fā)表于 2011-06-15 00:18 |只看該作者
本帖最后由 rabbitlcat 于 2011-06-15 20:17 編輯

看完懂了好多

論壇徽章:
0
7 [報告]
發(fā)表于 2011-06-15 19:52 |只看該作者
學(xué)習(xí)下

論壇徽章:
0
8 [報告]
發(fā)表于 2012-02-08 10:31 |只看該作者
回復(fù) 1# L_kernel


大神是否能幫我解答一下這個問題?謝謝拉。
    http://72891.cn/thread-3668196-1-1.html

論壇徽章:
3
水瓶座
日期:2014-03-25 17:08:042015亞冠之塔什干棉農(nóng)
日期:2015-08-10 10:45:122015亞冠之薩濟(jì)拖拉機(jī)
日期:2015-08-13 16:05:24
9 [報告]
發(fā)表于 2012-04-26 10:29 |只看該作者
樓主,特別感謝你的分享,我將你的文章轉(zhuǎn)到我的博客,謝謝了回復(fù) 1# L_kernel


   

論壇徽章:
0
10 [報告]
發(fā)表于 2012-04-26 10:38 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP