目錄
環境變數
位置變數
預定義變數
自定義變數
算數運算
內建測試判斷 成功/成立(1) 失敗/不成立(0)
數值比較:
字串測試:
檔案測試:
date
取字串
find 查詢檔案
使用者環境變數(/root/.bash_profile)
系統環境變數(/etc/profile)
通常和指令碼聯合使用
$0 指令碼名稱
$0、$1、$2…… 位置引數
將傳遞給指令碼的引數儲存在位置變數中,以便於在指令碼中引用這些引數
bash定義了9個位置變數,分別$1,$2……$9,指令碼編寫者在指令碼中引用這9個變數,獲取傳遞給指令碼的引數。
$0 儲存當前程序或指令碼的名稱
$! 後台執行的最後乙個程序的pid號
$? 表示程式退出的代表(一般0代表執行成功,非0代表執行失敗)
$* 代表所有引數內容(整體)
$$ 代表當前程序的id號碼
$# 代表當前shell的引數個數
$@ 代表所有引數內容(逐個讀取)
例項:ls /etc
echo $0 返回的是0說明上一條指令正常結束,非0說明上一條指令失敗
語法格式:name=value
變數等號兩邊不能有空格,對大小寫敏感
定義好的變數使用 $變數名 來呼叫變數的值
+ - * / %
1 $((expression)) 注意兩層括號
2 $[expression)
3 expr expression
例項:a=2
b=2echo $((a+b))
expr 5 + 2 注意有空格
expr $a + $b expr必須加上$,前兩種方法不需要
test 測試表示式
[ 測試表示式 ] (最常見的,測試表示式與中括號間一定有括號)
&& 邏輯與
cmd1 && cmd2 cmd1成功了才會執行cmd2
|| 邏輯或
cmd1 || cmd2 cmd1失敗了才會執行cmd2
; 無邏輯關係
cmd1 ; cmd2 cmd1執行完才會執行cmd2
用於之間連線
-eq 等於為真
-ne 不等於為真
-gt 大於為真
-ge 大於等於為真
-lt 小於為真
-le 小於等於為真
例項: a=2
b=2test $a -lt $b
echo $?
(返回1)
[ $a -gt $b ]
echo $?
= 等於為真
!= 不等於為真
-z字串 字串長度為0為真
-n字串 字串長度不為0為真
例項:a="i love"
b="you"
[ "$a" = "$b" ] ; echo $? (注意字元比較要加引號)
a=""
[ -z "$a" ] ; echo $? (返回0)
如果a=" ",那麼返回1
-e 檔名 檔案存在為真
-r 檔名 檔案存在且可讀為真
-w 檔名 檔案存在且可寫為真
-x 檔名 檔案存在且可執行為真
-s 檔名 檔案存在且至少有乙個字元為真
-d 檔名 檔案存在且為目錄為真
-f 檔名 檔案存在且為普通檔案為真
-c 檔名 檔案存在且為字元型特殊檔案為真
-b 檔名 檔案存在且為塊特殊檔案為真
例項:[ -r /etc/passwd ] ; echo $?
返回0 (一定要是絕對路徑)
!(邏輯非) -o(邏輯或) -a(邏輯與) :用於[ ]中的測試表示式
優先順序!>-a>-o
date 檢視時間
date -s "2016-4-9 12:44:40 " 修改時間(臨時生效)
date '+%y%m%d' (按格式輸出)
date '+%y%m%d%h%m'
a="201604091527"
echo $ (跳過前兩個,取三個)
返回160
a='123.log'
返貨123
echo $ (以.為分隔符遮蔽後面的)
-type -name -size -mtime
例項:find . -type d 查詢當前目錄下型別為目錄的檔案
Linux學習筆記之Shell入門
shell 是乙個命令列直譯器,它為使用者提供了乙個向 linux 核心傳送請求以便執行程式的介面系統級程式,使用者可以用 shell 來啟動 掛起 停止甚至編寫一些程式。shell 處在核心與外層應用程式之間,起著協調使用者與系統的一致性 在使用者與系統之間進行互動的作用。圖 1 是 linux ...
linux學習筆記之shell程式設計(指令碼)
bin bash 號表示注釋 shell指令碼從上往下依次執行 date grep root etc passwd 先加許可權 chmod x 1.sh或chmod 744 1.sh 輸入絕對路徑或相對路徑如.1.sh 表示當前目錄 bash 1.sh sh 1.sh source 1.sh 1.s...
linux學習筆記 shell
shell bash 212一般可以將shell理解為乙個命令處理器 乙個讀取並解釋所輸入命令的程式。其次,shell還支援一些shell指令碼。使用的shell型別,可以檢視環境變數echo shell 系統可用的shell路徑儲存在 etc shells 改變登入shell可以使用chsh ch...