Shell指令碼基本教程筆記之一

2021-05-12 09:16:16 字數 2057 閱讀 4286

echo "this is an example of the echo command"

# this is a comment line.this would not produce any out put!

變數variable1=$

從鍵盤中讀入乙個值給變數fname

read fname

export命令特別指出全域性變數

環境變數

echo $home

命令替換

在單個命令列中使用多個命令的另一種方法(非pipes)是通過命令替換

echo "the date is `date`"

注意:上面date周圍是反撇號

expr命令

用於求值算術表示式。該命令的輸出被傳送到標準輸出

expr 4 + 5 將在螢幕上顯示9

算術展開

你可以在$((...))中括乙個表示式,用下面的命令來計算它的值

$((expression))

example1

條件執行

test和命令

求值表示式,並返回true(0)或false

if構造

算術測試

結合if構造,它可以用於測試變數的數字值

串測試test命令也可用於字串

檔案測試

test命令也可用於檢查檔案的狀態

exit命令

用於終止shell指令碼的執行並返回到$提示符下

test數值測試

-eq等於為真

-ne不等於為真

-gt大於為真

-ge大於等於為真

-lt小於為真

-le小於等於為真

test字串測試

=等於為真

!=不等於為真

-z字串 字串長度為零為真

-n字串 字串長度不為零為真

test檔案測試

-e 檔案存在為真

-r 檔案存在且可讀為真

-w 檔案存在且可讀為真

-x 檔案存在且可執行為真

-s 檔案存在且至少有乙個字元為真

-d 檔案存在且為目錄為真

-f 檔案存在且為普通檔案為真

-e 檔案存在且為字元型特殊檔案為真

-b 檔案存在且為塊特殊檔案為真

-a並且 -o或者 !非

example2

case...esac構造

shell指令碼中使用的這個構造變數的值而執行一組特定指令

當變數的值和其中乙個指定的值相匹配時,就執行寫在該值下的一組命令

example3 迭代

while 《條件》

do《命令》

done

只有條件為真時,執行do和done之間的命令

until迴圈構造的求值模式於while迴圈相反

until迴圈將繼續執行直到求值的條件為真

for迴圈

for variable_name in

do...

done

for迴圈取一列值作為輸入並對迴圈中每個值執行迴圈

break引起終止迴圈

continue強迫乙個新的重複

example4

控制程序的進行

請求後台處理

用於請求後台程序的符號是&

wc tempfile &

[1] 2082

vi newfile

檢查後台程序

ps(程序狀態)命令為每個當前活動的每個程序產生一行入口

終止後台程序

可用kill命令,如:kill 278

檢視完成乙個命令所花的時間

你可以使用time命令來檢視乙個命令從開始到結束所花的時間

time find /etc -name "passwd" 2> /dev/null

注:以上命令包含錯誤重定向2> /dev/null

管道的介紹

垂直條|是管道字元

它指示shell | 前面的命令的輸出作為 | 之後命令的輸入傳送

ls -l | more

用管道組合命令,功能強大

ls -l | more

Shell學習筆記之一

1.先看乙個常用的命令 這個命令組合了幾個不同的shell命令,shell命令是有這種特性在裡面的。就是統一性,簡單性。可以通過管道命令組合多個shell命令。如上面的命令,分別是 顯示當前執行的程序,sort是對程序進行排序,uniq是去除重複的情況,grep v sh 是去掉,不展示sh這個程序...

Shell指令碼基本運算 一

read p 提示資訊 變數名 將使用者輸入的資訊賦予變數名 四則運算格式 運算內容 echo e e代表 對後面的命令 n進行轉換 bin bash echo e please input a filename,i will check it isn t exits type and permis...

shell指令碼 入門教程(一)

0.摘要 本文主要介紹shell指令碼的概念,並給出hello world示例,讓讀者對shell指令碼有乙個基礎的認識。1.什麼是指令碼 簡單地說 在linux或類似系統中,我們常常會使用一系列的命令來完成一件小型的工作。如果把這些命令串起來並存放到乙個檔案中,那麼就得到了乙個指令碼。當然,指令碼...