Linux高階之Shell程式設計

2022-05-28 22:42:12 字數 2722 閱讀 3856

shell是乙個命名行直譯器,它為使用者提供乙個向linux核心傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動、掛起、停止甚至是編寫一些程式。

1) 指令碼以 #!/bin/bash 開頭

2) 指令碼需要有可執行許可權

3) hello,word!

#!/bin/bash

echo "hello,world!"

有執行許可權(x許可權)

1) 相對路徑 ./shell.sh

2) 絕對路徑 /root/shell.sh

sh + 指令碼(不需要執行許可權,不推薦)

1) 相對路徑 sh ./shell.sh

2) 絕對路徑 sh /root/shell.sh

linux中變數分為系統變數與使用者自定義變數

系統變數如:$home$pwd

檢視shell中所有變數可以用 set

定義變數: 變數=值

撤銷變數:unset 變數

宣告靜態變數:readonly 變數(不能unset)

變數的名稱可以由字母、數字、下劃線組成,不能以數字開頭

等號兩邊不能有空格

變數名一般習慣大寫

a=`ls -la` 反引號,執行裡面的命令,並把結果返回給a

a=$(ls -la) 等價於反引號

export 變數名=變數值 (將shell變數輸出為環境變數)

source 配置檔案 (讓修改後的配置資訊生效,配置檔案在/etc/profile)

當我們執行乙個shell指令碼時,如果希望獲取到命令列的引數資訊,就可以使用位置變數引數,比如 ./shell.sh 100 200 ,這個就是執行shell的命令列,可以在 shell.sh指令碼中獲取到引數資訊。

$n[n為數字,$0就表示命名本身 ./shell.sh,$1-9代表第乙個到第九個引數,10以上的引數需要用大括號包裹,$]

$* [這個變數代表命令列所有的引數,把引數看做乙個整體,類似於乙個字串接收]

$@ [這個變數也代表命令列中所有的引數,會區別對待,類似於陣列接收,可以遍歷]

$# [這個變數代表命令列中的引數個數]

$$ [當前程序的程序號 pid]

$! [後台執行的最後乙個程序的程序號]

$? [最後一次執行的命令的返回狀態,0表示正確執行了,反之錯誤,具體數字有命令決定]

$$((表示式)) 或者 $[表示式]

expr m + n [expr運算子之間要有空格]

expr *,/,%,- 乘,除,取餘,減

[ condition ] 注意:condition前後要有空格,非空返回true,可用$?驗證(0為true)

兩個整數的比較

= 字串比較

-lt 小於

-le 小於等於

-eq 等於

-gt 大於

-ge 大於等於

-ne 不等於

按照檔案許可權進行判斷

-r 有讀許可權[ -r 檔案 ]

-w 有寫的許可權

-x 有執行的許可權

按照檔案的型別進行判斷

-f 檔案存在並且是乙個常規檔案

-e 檔案存在

-d 檔案存在並且是乙個目錄

if

[ 條件判斷式 ];then

程式fiif

[ 條件判斷式 ]

then

程式elif[ 條件判斷式 ]

then

程式fi

case

$變數名 in

"值1")

如果變數值等於值1,執行程式1

;;"值2")

如果變數值等於值2,執行程式2

;;*)

如果變數值都不是以上值,執行此程式

;;esac

for

變數 in 值1 值2 值3

do程式

done

for((初始值;迴圈控制條件;變數變化))

do程式

done

while

[ 條件判斷式 ]

do程式

done

read (選項)(引數)

1. 選項

-p 指定讀取值時的提示符

-t 指定讀取值時的等待時間(秒),如果沒有在指定時間內輸入,則不再等待

2. 引數

變數 指定讀取值得變數名

shell程式設計和其他程式語言一樣,有系統函式,也可以自定義函式。

basename [pathname/string] [suffix] 返回完整路徑最後/的部分,常用於獲取檔名。suffix為字尾,如果suffix被指定,basename會將pathname或string中的suffix去掉

dirname pathname/string 返回檔案絕對路徑最後/的前面的部分,常用於返回路徑部分

1. 語法,呼叫直接寫函式名: funname [值]

[function] funname [()]

#!/bin/bash

function getsum()

read -p "請輸入第乙個數="n1

read -p "請輸入第二個數="n2

getsum $n1 $n2

linux之shell程式設計

shell你只需要了解這麼多 補充 1.第七部分特殊字元的使用 特殊字元用在shell指令碼中即可 2.第八部分中轉義字元的理解 shell命令列中特殊字元與其轉義詳解 去除特殊含義 這部分主要給大家詳細介紹了shell命令列中特殊字元與其轉義 去除特殊含義 的相關資料,文中介紹的很詳細,相信對大家...

Linux之Shell程式設計

定義變數 a 100 echo a a 撤銷變數 unset a echo a a 定義靜態變數 readonly b 100 echo b b 將命令的返回值賦值給變數 echo 0 1 2 echo echo echo sh 100 200echo 當前的程序號 後台方式執行 sh sh ech...

Linux之Shell程式設計

shell是乙個命令直譯器,他為使用者提供了乙個向linux核心傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動 掛起 停止甚至是編寫一些程式 指令碼格式要求 1 指令碼以 bin bash開頭 2 指令碼需要有可執行許可權 指令碼常用的執行方式 方式1 輸入指令碼的絕對路徑或相對...