測試和判斷
test命令(也可以使用代替test)可用來判斷檔案 整數 和字串 返回邏輯值
檔案測試 -e 檔案存在 -d 檔案型別是否為目錄-f檔案型別為普通檔案
整數比較 -eq (equal)相等 -ge (greater equal)大於等於-gt(greater than) 大於-le(less equal)小於等於 -lt(less than)小於
更高階的test支援 ><=等符號的使用 這時要用符號代表test的高階用法
字串測試 -n 字串長度是否非0 -z 是否為0 =字串判等!=字串不等 (詳細用法見man test)
當測試結果為正確時 返回0 返回非0值表示不正確 使用時 裡面的空格不能少
分支有if 和case兩種
if通用格式: 包括了if-else if-elif-else if巢狀
if [ $user = root ]; thenif [ $uid = 0 ]; then
echo
"root 0
"elif [ $uid = 1 ]; then
echo
"root 1
"else
echo
"root"fi
else
echo
"not root
"fi
case通用格式 每一項結束使用;; 不需要break 使用*可匹配任意情況
case"$1"in"start
"|"start")
echo
"starting...";;
"stop
"|"stop")
echo
"stoping...";;
*)
echo
"usages: $0 ";;
esac
迴圈有for和while兩種形式 迴圈也支援 break 和continue
for 形式的
for i indomkdir
$idone
shell還支援c語言風格的for 但是shell並不擅長數值計算這裡使用了雙圓括號(())
for ((i=1; i<8; i++))doecho
$idone
while 就是滿足條件一直執行
i=0while [ $i -lt 8]do
echo"$i
"((i++))
done
until 正好和while相反不滿足條件時一直執行
i=0until [ $i -gt 8]do
if [ $i -eq 5 ]; then
((i++))
continue
elif [ $i -eq 7 ]; then
break
else
echo"$i
"((i++))
fidone
函式function fname(){}function可以省略 呼叫時直接使用fname不用加括號 若有引數 直接跟在後面就行了
可在函式裡面使用local申請區域性變數$# 代表引數數量 $* 和$@ 代表所有位置引數 shift引數左移$1 $2 $3 ...代表第1 2 3 個引數
fork炸彈f () f 就是遞迴呼叫一直建立程序消耗記憶體
Git分支 master分支和開發版本分支
問題 在使用git時,假如遠端倉庫有dev和master兩個分支,master作為乙個穩定版分支,可用於直接發布產品,日常的開發則push到dev分支,那本地是不是要從dev分支中建立乙個本地分支,然後在這個分支的push的動作是預設推到遠端dev分支上?解惑 一 遠端倉庫有master和dev分支...
cvs 版本分支問題
專案快做完了,別的應用要在現有專案的基礎上改幾個和兩個漢字拿出去賣,現有專案肯定還要再改正bug,建立2個專案的話合併太麻煩,決定搞定cvs的分支管理。以下為自己疑惑的基本問題 1.雖然只需要改3個和乙個檔案中的2個漢字,是否需要將整個專案定義為乙個分支?目前測試結果 要!不將整個專案定義為乙個分支...
Git 基本分支規範
基本 分支應該分為兩類,一類是主要分支,包括線上主分支 master 和開發主分支 develop 另一類是輔助分支,包括測試分支 release,線上緊急修復分支 hotfix,以及功能 開發分支 feature。master 分支上的所有 節點都必須處於可發布狀態,且與線上執行的版本對應並且每乙...