Linux下Shell編程

來源:互聯網
上載者:User

標籤:com   使用   檔案   資料   string   類   

Linux的shell編程 


1、什麼是shell?
當一個使用者登入Linux系統之後,系統初始化程式init就為每一個使用者運行一個稱為shell(外殼)的程式。
shell就是一個命令列解譯器,它為使用者提供了一個向Linux核心發送請求以便運行程式的介面系統級程式,使用者可以用shell來啟動、掛起、停止甚至是編寫一些程式。一般的Linux系統都將bash作為預設的shell。


2、幾種流行的shell
目前流行的shell有ash、bash、ksh、csh、zsh等,可以用下面的命令來查看shell的類型:
echo $SHELL
SHELL是一個環境變數,它記錄使用者所使用的shell類型。


3、如果要執行該指令碼,還必須使其可執行。
   chmod +x filename 
然後,您可以通過輸入: ./filename 來執行您的指令碼。


4、第一個shell程式

$vi firstscript.sh


echo “You are welcome to use base.” 
echo “Current work directory is $PWD.”
echo “You are $LOGNAME.”


增加執行許可權
$chmod +x firstscript.sh
開始運行程式:
$./firstscript.sh


5、簡單的運算 
$[expression]
例如:
var1=2
var2=$[$var1*10+1]
echo $var2    
返回值為21。 


-r檔案名稱:如果檔案存在且可讀則為真
-w檔案名稱:如果檔案存在且可寫則為真
-x檔案名稱:如果檔案存在且可執行則為真
-s檔案名稱:如果檔案存在且至少有一個字元則為真
-d檔案名稱:如果檔案存在且為目錄則為真
-f檔案名稱:如果檔案存在且為普通檔案則為真
-e檔案名稱:如果檔案存在則為真
-c檔案名稱:如果檔案存在且為字元型特殊檔案則為真
-b檔案名稱:如果檔案存在且為塊特殊檔案則為真


-a 邏輯與
-o 邏輯或 
!  邏輯否


String_operator 可以為:
=:兩個字串相等
!=:兩個字串不等
-z:空串
-n:非空串 
-eq:數值相等
-ne:數值不相等
-gt:大於
-lt:小於
-le:小於等於
-ge:大於等於 


6、命令格式:read 變數名列表
功能:從鍵盤或檔案輸入資料,賦值給變數。shell用空格作為變數之間的分割符。
按斷行符號鍵或者CTRL+D結束輸入。
當read從檔案中讀取資料時候是按照行讀取的,即一次讀取一行。如果沒有碰到斷行符號符,則一直讀到檔案末尾。讀取資料的方式和從鍵盤輸入時相同。  
$read name sex age
Yangailin male 25
$echo  $name
Yangailin
$echo $sex
male
$echo $age
25


$read name sex
Yangailin male 25
$echo $name
Yangailin
$echo $sex
male 25 


$read name sex
Yangailin male 25
$echo $name
Yangailin
$echo $sex
male 25 


7、管道pipe 
可以通過管道將一個命令的輸出傳遞給另一個命令作為輸入。管道用豎杠|表示,它的文法格式如下:
命令1  |  命令2 


8、cat 命令 
cat 命令可以用來顯示檔案內容,建立檔案,還可以用來顯示控制符號(用-v選項)。 
cat命令一下子顯示整個完整的檔案。
如果希望每次顯示一頁,可以使用more命令
 $cat filename1  filename2 > filename3   
#該命令把兩個檔案連成一個檔案filename3


9、shell進階編程
shell 允許使用者在不同的命令之間,放上特殊的排列字元。使用者如果需要在一行中給出多個命令需使用分號“;”。
command1 ; command2  


command1 && command2
上面的命令表示只有當 command1 正確運行完畢後,才執行 command2 。 


command1 || command2
上面的命令表示只有當 command1 運行失敗才會執行 command2 。 


在shell下面,一個新產生的進程可以通過用命令後面的符號“;”和“&”來分別以前台和背景方式來執行,文法如下: 
command; 產生一個前台的進程,下一個命令須等該命令運行結束後才能輸入。
command & 產生一個背景進程,此進程在後台啟動並執行同時,可以輸入其他的命令。 


在shell中有兩種命令分組的方法:“()”和“{}”,當使用者在執行某個命令時不想讓命令運行時對狀態集合(如位置參數、環境變數、當前工作目錄等)的改變影響到下面語句的執行時,就應該把這些命令放在圓括弧中
{}用於將順序執行的命令的輸出結果用於另一個命令的輸入(管道方式)


shell程式的調試主要是利用bash命令解釋程式的選擇項。調用bash的形式是:
  bash -選擇項 shell程式檔案名稱
-e:如果一個命令失敗就立即退出
-n:讀入命令但是不執行它們
-u:置換時把未設定的變數看作出錯
-v:當讀入shell輸入行時把它們顯示出來
-x:執行命令時把命令和它們的參數顯示出來 


調試shell程式的主要方法是利用shell命令解釋程式的“-v”或“-x”選項來跟蹤程式的執行。“-v”選擇項使shell在執行程式的過程中,把它讀入的每一個命令列都顯示出來,而“-x”選擇項使shell在執行程式的過程中把它執行的每一個命令在行首用一個“+”加上命令名顯示出來。並把每一個變數和該變數所取的值也顯示出來。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.