先從引號開始說起吧,linux中shell中游三種引號,分別為:單引號、雙引號、反引號。
單引號):
由單引號括起來的字元只能作為普通字元出現,不具有任何命令效應,因此特殊字元由單引號括起來後,也會失去原有的意義。
雙引號):
雙引號不同於單引號,部分特殊字元被雙引號括起來後任然具有其原有的特性,比如我們最常用的$字元,還有雙引號同樣也是。
反引號):
反引號一般位於esc鍵的正下方,反引號括起來的字元被shell解釋為命令列。執行的時候,shell首先執行被反引號括起來的部分,然後將執行的結果替換反引號括起來的部分。
例子:str=「hello, world!」
echo "the string str is :$str" #------the string str is :hello,world!
echo 'the string str is :$str' #------the string str is:$str
str1="current directory is `pwd`"
echo $str1 #------current directory is /home/peng/scripts
shell中的括號也是很有特色的,有大括號、中括號、小括號、雙小括號等,不同的括號用在不同的場合發揮不同的功效。
大括號):
通常在我們寫變數的時候,會用到$var,但是當在其後緊接著字元時,這樣就造成了不便,因此可以加上大括號,$指示變數var的原型。
例如:#var=「hello,world!」
#echo "output string is $varname"
這個時候輸出就會出現錯誤,因為機器根本找不到varname這個變數。
所以可以將第二句改為:#echo 「output string is $name」 就ok了。
大括號還有功用就是大括號擴充套件。舉個例子:比如我要在/etc/test1/test2/test3目錄下建立file1、file2、file3三個檔案
#touch /etc/test1/test2/test3/file
這樣就行了,免去了很多的麻煩。
中括號):
中括號一般用在判斷語句中,用於數值的判斷、字元的比較、檔案的判斷等。
例如:# [ -f 「filename」] && echo "the filename is exist!"
上面的例子說的是:首先判斷是否存在filename為名字的檔案,若存在,則列印出echo後面的字元,前半句就用到了中括號的功能。需要注意的是:用於判斷的時候,前後兩個中括號空出一格。
小括號):
小括號的功用比較龐雜。它可以用於一串命令的執行。例如:
#$(var="hello,world";echo $var)
注意到,命令之間用分號隔開,大括號也有此功用,但是大括號需要與左括號之間有個空格才行。
涉及到小括號的幾種替換結構:$/$/$/$
將上述四組分為兩個部分介紹吧,第乙個部分是$/$。
#$ #表示若var為空時,則用字串stirng的值來代替$,若var不為空,則$的值為var
#$ #和上面有區別的地方就是,若var為空時,除了替代外,還將string的值賦給var變數。這種方法的乙個常用的用法是,判斷某個變數是否被賦值,若沒有,給它乙個預設值。
第二部分是$/$。
#$ #與第一部分相反,只有當var不為空的時候才實施替換,若為空的時候不替換
#$ #若變數var不為空,則用變數var的值來替換$;若變數var為空,則把string輸出到標準錯誤中,並從指令碼中退出。我們可利用此特性來檢查是否設定了變數的值。
需要注意的是:上述四種替換表示式中的string不一定是字串變數,還可以是命令型的變數。例如:$/$
雙小括號):
格式為:$((exp))。主要是用於數值的計算。
linux指令碼學習
最近又重新撿起了以前放在一邊的linux指令碼了,呵呵,最開始學習linux指令碼編寫是在搭建linux下的qmail郵件伺服器的時候。那時候由於qmail要安裝很多軟體包,所以就把命令整理成乙個指令碼來一次批處理執行,那時也學到了linux下的shell程式設計。指令碼其實多半就是終端命令的乙個集...
linux指令碼學習
進入當前指令碼所在目錄 其他神馬方法都是浮雲 sh dir x echo 0 grep if test then sh dir dirname 0 else sh dir dirname pwd 0 ficd sh dir 指令碼暫停 bash c read n1 p press any key t...
linux指令碼學習
進入當前指令碼所在目錄 對於軟鏈結不行 curr dir cd dirname 0 pwd cd curr dir for迴圈 for i 1 i 10 i do echo i sleep 1 done 指令碼暫停 bash c read n1 p press any key to continue...