寫乙個簡單的傳引數指令碼來測試:
#!/bin/bash
if [ $1 = "start" ]
then
echo"do start"
elif [ $1 = "stop" ]
then
echo "do stop"
else
echo "pleasemake sure the positon variable is start or stop."
fi
儲存為test.sh 執行 ./test.sh start或./test.sh stop
寫了乙個簡單的功能:
b=(`awk '/insert overwrite table/ ' $1`)
echo $
echo $ #輸出陣列元素個數
用單引號 lstr=』tblist=」1111」』
echo $lstr
tblist=」1111」
grep獲取行號:
grep -nw 「k=0」 automan.sh
if判斷:
?b當file存在並且是塊檔案時返回真
-c 當file存在並且是字元檔案時返回真
-d 當pathname存在並且是乙個目錄時返回真
-e 當pathname指定的檔案或目錄存在時返回真
-f 當file存在並且是正規檔案時返回真
-g 當由pathname指定的檔案或目錄存在並且設定了sgid位時返回為真
-h 當file存在並且是符號鏈結檔案時返回真,該選項在一些老系統上無效
-k 當由pathname指定的檔案或目錄存在並且設定了「粘滯」位時返回真
-p 當file存在並且是命令管道時返回為真
-r 當由pathname指定的檔案或目錄存在並且可讀時返回為真
-s 當file存在檔案大小大於0時返回真
-u 當由pathname指定的檔案或目錄存在並且設定了suid位時返回真
-w 當由pathname指定的檔案或目錄存在並且可執行時返回真。乙個目錄為了它的內容被訪問必然是可執行的。
-o 當由pathname指定的檔案或目錄存在並且被子當前程序的有效使用者id所指定的使用者擁有時返回真。
-eq 等於
-ne 不等於
-gt 大於
-lt 小於
-le 小於等於
-ge 大於等於
-z 空串
= 兩個字元相等
!= 兩個字元不等
-n 非空串
-e filename 如果 filename存在,則為真
-d filename 如果 filename為目錄,則為真
-f filename 如果 filename為常規檔案,則為真
-l filename 如果 filename為符號鏈結,則為真
-r filename 如果 filename可讀,則為真
-w filename 如果 filename可寫,則為真
-x filename 如果 filename可執行,則為真
filename1 -nt filename2 如果 filename1比 filename2新,則為真
filename1 -ot filename2 如果 filename1比 filename2舊,則為真
-zstring 如果 string長度為零,則為真
-nstring 如果 string長度非零,則為真
string1 = string2 如果 string1與 string2 相同,則為真
string1 != string2 如果 string1與 string2 不同,則為真
num1 -eq num2 等於
num1 -nenum2 不等於
num1 -ltnum2 小於
num1 -lenum2 小於或等於
num1 -gtnum2 大於
num1 -genum2 大於或等於
if [ -z"$1" ];then
echo "please input parameter"
exit
else
echo "parameter 1: $1"
fi
if [ $#
-lt3 ] ;then
echo
"please input 3parameter"
exit
else
for var in $*; do
echo
"var is $var"
done
fi
無論什麼程式語言都離不開條件判斷。shell也不例外。
if list then
do something here
elif list then
do another thing here
else
do something else here
fi
#!/bin/sh
system=`uname -s` #獲取作業系統型別,我本地是linux
if [ $system = "linux" ] ; then #如果是linux的話列印linux字串
echo "linux"
elif [ $system = "freebsd" ] ; then
echo "freebsd"
elif [ $system = "solaris" ] ; then
echo "solaris"
else
echo "what?"
fi #ifend
基本上和其他指令碼語言一樣。沒有太大區別。不過值得注意的是。裡面的條件判斷。
str1 = str2 當兩個串有相同內容、長度時為真
str1 != str2 當串str1和str2不等時為真
-n str1 當串的長度大於0時為真(串非空)
-z str1 當串的長度為0時為真(空串)
str1 當串str1為非空時為真
int1 -eq int2 兩數相等為真
int1 -ne int2 兩數不等為真
int1 -gt int2 int1大於int2為真
int1 -ge int2 int1大於等於int2為真
int1 -lt int2 int1小於int2為真
int1 -le int2 int1小於等於int2為真
-r file 使用者可讀為真
-w file 使用者可寫為真
-x file 使用者可執行為真
-f file 檔案為正規檔案為真
-d file 檔案為目錄為真
-c file 檔案為字元特殊檔案為真
-b file 檔案為塊特殊檔案為真
-s file 檔案大小非0時為真
-t file 當檔案描述符(預設為1)指定的裝置為終端時為真
-a 與
-o 或
! 非
語法雖然簡單,但是在shell裡使用的時候,他的功能變得強大了。 shell經典指令碼或命令列
檢視檔案或目錄大小 du h file path 檢視某個檔案大小,並顯示易讀的單位 du ah 檢視當前目錄下及其子目錄下所有檔案的大小生成自簽名證書 create ca.sh bin sh openssl genrsa out ca.key 2048 printf n n n n n n n o...
Linux命令列與shell指令碼
路徑 cd destinationcp 命令在複製檔案時有兩個引數,源物件和目標物件 cp source destinationpwd 命令可以顯示出shell會話的當前目錄 單點符 表示當前目錄 雙點符 表示當前目錄的父目錄 ls 列表命令,輸出的列表是按字母 按列排序的 ls l 顯示附加資訊,...
Linux命令列與shell指令碼
一 linux簡介 1.linux系統內部結構 劃分為以下四部分 linux核心 gnu工具元件 圖形化桌面環境 應用軟體。2.linux系統的核心 核心 核心基本負責以下四項主要功能 系統記憶體管理 包括物理記憶體和虛擬記憶體 軟體程式管理 硬體裝置管理 檔案系統管理。1 系統記憶體管理 可以檢視...