目前用到shell的情況比較簡單,暫時總結一部分,日後用到時回顧補充
1. linux的預設shell是bash,shell指令碼開頭需要定義用哪種直譯器
例:#!/bin/bash
2. 執行方法
chmod +x test.sh
./test.sh
或/bin/sh test.sh
3. 變數
所有變數預設為字串,無論有沒有引號。
宣告:變數名不加$,變數名和等號之間不能有空格
使用:在變數名前加$,可用{}界定邊界 echo 「i am good at $script」
賦值:等於號,但涉及計算的需要用命令:
(()):雙小括號,整數運算子
echo $(($a+2))
echo ((2>1)) 輸出1(真1假0)
((a=$b+1+2))
let:let val=$val+1
expr:
唯讀變數:readonly命令
myurl=""
readonly myurl
刪除變數:unset variable_name
讀取檔案:
cat test.txt | while read line
doecho $line
done
while read line
doecho $line
done < test.txt
4. 字串
建議使用雙引號,裡面可以出現變數和轉義字元
下列輸出相同:
greeting=「hello, 「$your_name」 !」
greeting_1=「hello, $ !」
長度:$
擷取:$
查詢:grep(返回查詢到的字串)、=~(判斷是否包含)
5. 陣列
只有一維陣列,定義:name=(val1 val2 val3 …)
長度:$
6. 運算子
7. 注釋
單行#,多行使用
:<8. 引數
呼叫時可以加上引數,按順序預設命名為$1,$2,…
$0是檔名
$#是引數個數
$$是指令碼執行的當前程序id號
$?是顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤
9. 輸出
echo或printf(printf同c,不加括號)
10. if test命令if test ...
then
...elif ...
then
...else
...fi
數值比較:
引數說明
-eq等於則為真
-ne不等於則為真
-gt大於則為真
-ge大於等於則為真
-lt小於則為真
-le小於等於則為真
字串:
引數說明
=等於則為真
!=不相等則為真
-z字串 字串的長度為零則為真
-n字串 字串的長度不為零則為真
檔案測試
引數說明
-e 檔名
如果檔案存在則為真
-r 檔名
如果檔案存在且可讀則為真
-w 檔名
如果檔案存在且可寫則為真
-x 檔名
如果檔案存在且可執行則為真
-s 檔名
如果檔案存在且至少有乙個字元則為真
-d 檔名
如果檔案存在且為目錄則為真
-f 檔名
如果檔案存在且為普通檔案則為真
-c 檔名
如果檔案存在且為字元型特殊檔案則為真
-b 檔名
如果檔案存在且為塊特殊檔案則為真
有for while until case break continue
for var in item1 item2 ... itemn
do ...
done
while [[ condition ]]
do ...
done
until [[ condition ]]
do ...
done
case val in
val1)
...;;
val2)
...;;
esac
命令
說明command > file
將輸出重定向到 file
command < file
將輸入重定向到 file
command >> file
將輸出以追加的方式重定向到 file
n > file
將檔案描述符為 n 的檔案重定向到 file
n >> file
將檔案描述符為 n 的檔案以追加的方式重定向到 file
n >& m
將輸出檔案 m 和 n 合併
n <& m
將輸入檔案 m 和 n 合併
<< tag
將開始標記 tag 和結束標記 tag 之間的內容作為輸入
shell程式設計 基礎知識
shell 是命令直譯器 系統預設的shell是 bash 檢視shell的分類 1 cat etc shells 2 chsh l 3 ls bin sh 用命令檢視環境變數 env 檢視所有環境變數 set 檢視所有變數 echo path 系統環境變數的目錄 user 系統當前使用者 home...
Shell指令碼程式設計01 基礎知識
shell指令碼與windows dos下的批處理相似,就是將各類命令預先放入到乙個檔案中,然後執行該檔案,便可以達到與批處理類似的功能,主要是方便管理員進行設定或者管理用的。換句話來說,shell指令碼是利用shell的功能所寫的乙個程式,這個程式使用純文字檔案,將一些shell的語法與指令寫在裡...
SHELL 基礎知識
1 什麼是shell?shell的本意是 殼 的意思,其實已經很形象地說明了shell在linux系統中的作用。shell就是圍繞在linux核心之外的乙個 殼 程式,使用者在作業系統上完成的所有任務都是通過shell與linux系 統核心的互動來實現的。shell本身是乙個c語言編寫的程式,是使用...