Shell指令碼接收來自命令列傳入的引數

2021-08-10 14:55:38 字數 3793 閱讀 8244

寫乙個簡單的傳引數指令碼來測試:

#!/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 系統記憶體管理 可以檢視...