linux中指令碼學習

2021-05-24 23:49:14 字數 2185 閱讀 5707

先從引號開始說起吧,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...