標籤: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在執行程式的過程中把它執行的每一個命令在行首用一個“+”加上命令名顯示出來。並把每一個變數和該變數所取的值也顯示出來。