shell指令碼學習簡單記錄筆記
阿新 • • 發佈:2021-08-13
------------------------------ 以下是fun.sh檔案 ------------------------------------- #!/bin/bash sed -i 's/\r//' $0 #替換本檔案的\r為空,因為我是在window下編寫linux上執行的 function max(){ if [ $# -ne 2 ];then echo "必須兩個引數,呼叫方法:max p1 p2" else if [ $1 -gt $2 ];then return $1 else return $2 fi fi } ------------------------------ 以下是main.sh檔案 ------------------------------------- #!/bin/bash sed -i 's/\r//' $0 #替換本檔案的\r為空,轉window換行符\n\r為linux換行符\n # $0:第0個引數即當前程式名稱,$$當前程序號 # $1:第1個引數,$2...以此類推 # $@、$*:所有的引數列表 # $#:引數個數 # ${!#}:最後一個引數 # $( pwd ):呼叫pwd命令,或者使用`pwd` # read -p "input" name :使用name接受輸入 # ()由子shell完成,{}由當前shell完成 # ${str/old/new}:new替換第一個old,${str//old/new}:new替換所有old # test -e file等價[ -e file]都是判斷file是否存在,再使用$?查詢上次執行結果 # declare -i s:強制把變數s當作int型別運算 # 檔案測試:-e存在,-d目錄,-f檔案,-r可讀,-w可寫,-x可執行, # 檔案測試:-L符號連線,-c字元裝置,-b塊裝置,-s檔案非空 # 邏輯條件:-a and,-o or,!取反 # 數值判斷:-eq,-ne,-gt,-ge,-le,-lt # 字串判斷:=相等,!=不等,-z空串,-n非空 # 控制語句:if [ ];then else elif fi 或 for(());do done 或 for i in list;do done # 控制語句:while [ ];do done 或 until [];do done | # 函式呼叫:函式名 引數1 引數2...,對應的接收引數$0,$1,$2...,return結果使用$?查詢 # source匯入其他shell指令碼檔案,source fun.sh匯入fun.sh指令碼檔案 echo "last params is : ${!#}" source fun.sh #匯入fun.sh指令碼 max 100 50 #呼叫fun.sh指令碼的max方法 en=$? #使用$?查詢上一次的執行結果,即呼叫max方法的結果 echo "max=$en" ---最後命令列執行:bash main.sh 即可測試