shell基本語法

2022-09-01 02:21:10 字數 1794 閱讀 5149

shell基本語法

#!是乙個約定的標記,他告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種shell

shell變數

定義變數:  num=5       使用變數時要在變數名前加乙個$    例:echo $num

注意: 等號的兩邊不能有空格

命名只能使用英文本母,數字和下劃線,首字元不能以數字開頭。

中間不能有空格,可以使用下劃線(_)

不能使用標點符號

不能使用bash裡的關鍵字

使用readonly命令可以將變數定義為唯讀變數,唯讀變數的值不能被改變。

刪除變數:unset num

變數型別:

(1)區域性變數:區域性變數在指令碼或命令中定義,近在當前shell例項中有效,其他shell啟動的程式不能訪問區域性變數。

(2)環境變數:所有的程式,包括shell啟動的程式,都能訪問環境變數,有些程式需要環境變數來保證其正常執行。必要的時候shell指令碼也可以定義環境變數。

(3)shell變數:shell變數是由shell程式設定的特殊變數。shell變數中有一部分是環境變數,有一部分是區域性變數,這些變數保證了shell的正常執行

單引號和雙引號

單引號:單引號裡的任何字元都會原樣輸出,單引號字串的變數是無效的;單引號不識別轉義字元,所以單引號裡不能出現單獨乙個的單引號。

雙引號:雙引號裡可以有變數,使用$符號可以直接輸出變數的值;雙引號可以識別轉義字元。

獲取字串的長度: echo $

擷取字串: echo $

傳遞引數

$0  執行的檔名

$1  第乙個引數

$2  第二個引數

$#  引數個數

$*  以乙個字串顯示所有向指令碼傳遞的引數,如果$*用「」括起來"$*",輸出結果像"1,2,3"

$@  以乙個單字串顯示所有向指令碼傳遞的引數,如果$@用「」括起來"$@",輸出結果像"1","2","3"

$$  指令碼執行的當前程序id號

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

$?  顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤

陣列定義陣列:array_name=(value1 value2 ... valuen)

陣列用括號來表示,元素用「空格」符號分開,陣列下標從0開始

還可以使用下標定義:array_name[0]=value0

array_name[1]=valiue1

讀取陣列的格式:$

獲取陣列中的所有元素:$ 或 $

獲取陣列的長度:$ 或 $

基本運算子

shell一般使用expr來完成算術運算

val=`expr 2 + 2`

注意:表示式和運算子之間要有空格,例如2+2是不對的,必須寫成2 + 2

完整的表示式要被``反引號包含

算術運算子:+加 -減 *乘 /除 %取餘 =賦值 ==相等 !=不等於 

關係運算子:-eq是否相等,-ne是否不相等,-gt大於,-lt小於,-ge大於等於,-le小於等於

布林運算子:!非, -o或, -a與

邏輯運算子:&&與, ||或

字串運算子:=相等,!=不等於,-z長度是否為0,-n長度是否不為0,$字串是否為空

printf用法

例:printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234

%-10s指寬度為10個字元,-表示左對齊,沒有則表示右對齊,任何字元都會被顯示在10個字元寬的字元內,如果不足則自動以空格填充,超過也會將內容全部顯示出來

%-4.2f指格式化為浮點數,.2表示保留2位小數

shell 基本語法

1,環境變數 環境變數可以從父程序傳給子程序,即shell的環境變數可以傳遞給fork出來的子程序 檢視當前shell的環境變數 command itcast printenv printenv 中的 env 是environment variable 的縮寫2,本地變數 只存在於當前程序 檢視當前...

Shell基本語法

二 引數傳遞 三 運算 四 邏輯運算子 五 條件分支 六 迴圈控制 七 函式 八 shell 輸入 輸出重定向 九 shell 檔案包含 1.變數命名之間不能有空格 2.使用變數需要使用 符號,最好使用 來規定變數的邊界,可以在字串中直接使用變數 3.唯讀變數用 readonly 修飾 4.刪除變數...

shell 基本語法

將os命令堆積到可執行的檔案裡,由上至下的順序執行文字裡的os命令 就是指令碼了.再加上些智慧型 條件 流控 控制,就變成了智慧型化指令碼了.part1 為何要有變數 程式的執行就是一些列狀態的變數 用變數值的變化去表示 part2 變數命名規則 以字母或下劃線開頭,剩下的部分可以是 字母 數字 下...