Linux shell指令碼分支迴圈函式筆記

2022-09-04 08:03:08 字數 1977 閱讀 6336

測試和判斷

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 ]; then

if [ $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 in 

domkdir

$idone

shell還支援c語言風格的for 但是shell並不擅長數值計算這裡使用了雙圓括號(())

for ((i=1; i<8; i++))

doecho

$idone

while 就是滿足條件一直執行

i=0

while [ $i -lt 8]do

echo"$i

"((i++))

done

until 正好和while相反不滿足條件時一直執行

i=0

until [ $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 分支上的所有 節點都必須處於可發布狀態,且與線上執行的版本對應並且每乙...