前提:shell環境pdksh和bash; ubuntu下預設的shell環境是bash
語法篇:
《一》變數
1.變數分為三種型別:環境變數、內部變數和使用者變數;其中環境變數和內部變數不需要使用者定義,可以直接使用。
環境變數:由系統定義,使用者不需要定義但可以改變變數的值。
內部變數:由系統提供的一種特殊型別的變數。這種變數在程式中用來做出判定。在shell程式內這些變數是不能夠修改的。
部分內部變數如下:
$# 傳遞給shell程式的位置引數的數目;
$? 最後命令完成碼或shell程式內所執行的shell程式;
$0 shell程式的名稱;
$* 呼叫shell程式是所傳送的變元的單字串。
使用者變數:由使用者定義的,能夠被使用者所修改。
注意:1. 變數是無型別的(若型別的);
2. 不需要宣告
3. 賦值 例子 a=10; 「=」兩邊不可以有空格
字串賦值有三種,分別是:「=」後直接跟字串;字串加單引號;字串加雙引號。但是有所區別
1. 當字串中有空格出現時,不能採用第一種,必須用第二種或第三種;
2. 加『』可以阻止shell解析變數
3. 加「」可以解析字串中的所有變數
例如:x=abc def會產生錯誤,正確形式 x='abc def' 或 x="abc def"
雙引號var="test string"
newvar="value of var is $var"
echo $newvar
輸出結果為: value of var is test string
單引號var="test string"
newvar='value of var is $var'
echo $newvar
輸出結果為:value of var is $var
反斜槓在某個字元前利用反斜槓可以阻止shell把後面的字元解釋為特殊字元。
test=3
var=$test
echo $var
輸出結果是:3
test=3
var=/$test
echo $var
輸出結果是:test
《二》表示式的比較
在不同的shell中執行邏輯比較的操作符是不同的,在pdksh和bash下,有乙個叫做 test 的命令可以用來完成表示式的比較。test命令支援如下四種型別的比較
1. 字串比較
= 比較兩個字元是否相等
!= 比較兩個字串是否不相等
-n 比較字串長度是否大於零
-z 比較字串長隊是否等於零
2. 數字比較
-eq 比較兩個數字是否相等
-ge 比較第乙個數是否大於等於第二個數
-le 比較第乙個數是否小於等於第二個數
-ne 比較兩個數是否不等
-gt 比較第乙個數是否大於第二個數
-lt 比較第乙個數是否小於第二個數
3. 檔案操作比較
-d 判斷檔案是否是目錄
-f 判斷檔案是否是普通檔案
-r 判斷是否對檔案設定了讀許可權
-s 判斷檔名長隊是否大於0
-w 判斷檔案是否有寫許可權
-x 判斷檔案是否有執行許可權
4. 邏輯操作符比較
! 邏輯非
-o 邏輯或
-a 邏輯與
linux下的shell程式設計
shell程式就是放在檔案的一系列linux命令和應用程式 shell也就是linux下的指令碼語言 1.shell指令碼執行的必須條件 1 bin bash 必須以此作為開頭 3 一般以.sh結尾 2.shell的兩種執行方式 1 可執行的shell指令碼 2 bash shell指令碼 2.關於...
linux下的shell指令碼程式設計
程式語言分為兩種,一種是整個 進行編譯然後進行執行 另一種就是shell這種通過直譯器一行一行轉換為 linux常用的一些命令此處不再贅述 直接進入主題 我們來寫第乙個程式 hello world bin bash 上面的 告訴了直譯器採用bash直譯器來執行 echo hello world ec...
Linux下shell指令碼程式設計
shell程式設計小練習 在linux作業系統中,如果插入乙個usb裝置,需要用mount掛載命令才能實現這個裝置的載入,下面寫乙個usb裝置掛載與檔案複製的shell程式,程式需求 1 執行時,提示使用者輸入 y 或者 y 確定是否掛載usb裝置,u盤檔案 dev sdc1 if ans y o ...