1. 程式人生 > 其它 >shell指令碼學習簡單記錄筆記

shell指令碼學習簡單記錄筆記

------------------------------ 以下是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 即可測試