Linux下的shell程式設計

2021-04-29 21:56:21 字數 1896 閱讀 8375

前提: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 ...