echo
- 打印
變量
- readOnly 將變量變成只讀變量
- unset 刪除變量
- 單引號(hào)里的任何東西都會(huì)原樣輸出
- 雙引號(hào)里的可以有變量 也可以進(jìn)行轉(zhuǎn)意 所以雙引號(hào)比單引號(hào)好用
- ``這里面可以繼續(xù)寫命令
字符串 str
-
str :讀取字符串的長度
- str:1:4 :截取字符串第1到4個(gè)
- 課外作業(yè) :字符串的各種處理
數(shù)組
- 數(shù)組名=(值1 值2 ... 值n)
- array_name[0]=value0
- ${數(shù)組名[下標(biāo)]}
- ${array_name[@]} 讀取array中的所有元素
- 數(shù)組取長度的方式和字符串一樣 也是在前面加上# 但是要注意取得是整個(gè)數(shù)組的長度 還是單個(gè)數(shù)組元素的長度
$0 $1 $2 $3
- $0為文件名 之后就是我執(zhí)行這個(gè)腳本帶的參數(shù)
- $# 傳遞到腳本的參數(shù)個(gè)數(shù)
- $* 直接顯示所有當(dāng)成1個(gè)參數(shù)打印的
- $@ 有幾個(gè)參數(shù) 就打印幾個(gè)參數(shù)
- $$ 腳本運(yùn)行進(jìn)程ID
運(yùn)算 檢查是否正確 用[]框起來 去if
- +-*/%= == != 和java一樣 在Mac 中 $((表達(dá)式)) 就可以表示 expr
- 關(guān)系運(yùn)算符 -eq -ne - gt (GREATER THAN) -lt - ge -le
- 邏輯運(yùn)算符 || && -o -a
- 字符串運(yùn)算符 -z -n = != [str]
- 文件運(yùn)算符
- -f 文件是否存在
- -x -r -w 文件是否可執(zhí)行
- -s 是否為空
- -e 目錄(文件)是否存在
- -d 是否為目錄
echo printf
- echo "It is a test" > myfile 顯示結(jié)果定向至文件
- printf 主要是格式化用的 類似于C %s\n %-10s %4.2f
if else
if condition
then
command1
command2
...
commandN
elif condition2
then
command2
else
command
fifor var in item1 item2 ... itemN
do
command1
command2
...
commandN
donecase 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esacbreak continue
函數(shù)
- func(){}
- 調(diào)用 func 返回結(jié)果使用 $?
- 傳遞參數(shù)
funWithParam(){
echo "第一個(gè)參數(shù)為 $1 !"
echo "第二個(gè)參數(shù)為 $2 !"
echo "第十個(gè)參數(shù)為 $10 !"
echo "第十個(gè)參數(shù)為 ${10} !"
echo "第十一個(gè)參數(shù)為 ${11} !"
echo "參數(shù)總數(shù)有 $# 個(gè)!"
echo "作為一個(gè)字符串輸出所有參數(shù) $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
重定向
輸出到文件
- < 從文件輸入
輸出追加到文件
- << 輸入追加到文件
引用外部腳本
- . filename source filename