shell是乙個命名行直譯器,它為使用者提供乙個向linux核心傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動、掛起、停止甚至是編寫一些程式。
1) 指令碼以 #!/bin/bash 開頭
2) 指令碼需要有可執行許可權
3) hello,word!
#!/bin/bashecho "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/bashfunction 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 輸入指令碼的絕對路徑或相對...