shell程式設計的核心內容(2)

2021-05-25 17:29:56 字數 2812 閱讀 2725

本篇文章緊接上篇shell程式設計核心內容(1),shell不僅僅是命令,很多情況,我們可以把它作為一種程式設計的工具,比如,用shell實現乙個學生資訊的管理系統。

本文的寫作目的就是讓你在十分鐘內學會shell程式設計。shell程式設計的精髓在於條件測試和分支結構。shell的分支結構與c語言的分支結構本質上是一樣的,只是語法詞法有些區別。條件測試,是為分支結構提供條件的。

while [ -r 

filename]do

echo』』

in while

」done

猜得到,我們想用while做迴圈,那麼,迴圈條件是什麼呢?迴圈體又是什麼呢?

我先告訴你,條件是

[ -r 

filename

],迴圈體就是do和done中間的命令

echo』』

in while」。

while結構的用法就是這樣的。這個,真的沒有為什麼。

我們學習shell程式設計,要掌握的,也是10分鐘之內能掌握的,就是,每一種分支結構的格式,加上諸如

[ -r 

filename

]的條件測試的用法。當然,這些條件不只是用在while中,也是用於其它分支結構的。

那麼 –

r 表示什麼呢?

我們看下列表:

• 1)

對檔案特性的測試

-d file---

檔案file

存在且為目錄檔案

-f  file---

檔案file

存在且為普通檔案

-r file---

檔案file

存在且為可讀檔案

-w file---

檔案file

存在且為可寫檔案

-x file---

檔案file

存在且為可執行檔案

-s file---

檔案file

存在且檔案長度為非零

• 2)

對字串內容的測試

s1 = s2---

當字串s1和

s2相同時結果為真值

s1 != s2---

當字串s1和

s2不相同時結果為真值

-z s1---s1

串長度等於

0-n s1---s1

串長度不等於0• 

3)用於對整數

n的測試

n1 –eq n2 ---

當整數n1與n2

相等時,

返回真值

n1 –ne n2 ---

當整數n1與n2

不相等時

,返回真值

n1 –lt n2 ---

當整數n1

小於n2時,

返回真值

n1 –le n2 ---

當整數n1

小於等於n2時

,返回真值

n1 –gt n2---

當整數n1

大於n2時,

返回真值

n1 –ge n2---

當整數n1

大於等於n2時

,返回真值

現在,我們就可以用任何分支結構配合上述的測試條件了。幾種分支結構如下:

一.if  [ 條件1 ]

then

命令1elif [ 條件2 ]

then  

命令2else 

命令3fi   

二.case 值 in

模式1)

命令1;;

……*)

命令n;;

esac

三.while[condition]

• do

• commands

• ……

• last-command

• done

四.• 

until  [condition]

• do

• commands

• ……….

• last-command

• done

五.for 變數名

in列表

do命令

done

不再多說這些迴圈是什麼了,學過c的都知道。我們來看乙個簡單的例項:

#!/bin/sh

#fortest

#to test the method of for

counter=0

for files in *

do  

counter=`expr $counter + 1`

done  

echo "there are $counter files in `pwd` "

這個例項囊括了算術運算的做法。是這樣的:

expr

是對shell

變數進行算術運算的操作.例:

$ count=0

$ count=$count+1

$ echo $count

顯示為0+1

$ count=`expr $count+1`

$ echo $count

顯示為1

要想做乙個算術運算,必須用expr對變數取值,指令碼語言裡,這種用法是通用的。通常用於硬體測試的tcl指令碼就是這樣的。

好了,上面的例項都能看懂了。

for files in *就是當前目錄下的檔案作為迴圈條件。counter=`expr $counter + 1`就是統計檔案個數。

如果你讀懂了這幾個例子,就沒問題了。相信真的也就是10分鐘的時間,除非你在仔細的看上述哪些測試條件和迴圈格式。我覺得用的時候可以查,不用記。

shell程式設計就真的只是這些,當然還能用函式呼叫的方式使用shell。

shell程式設計的核心內容

很多linux 的初學者以前可能用過很多 dos的命令,對 shell 這種命令式的程式語言略知一二,但並沒有接觸很多 shell 的用法,沒能真正抓住這種強大的程式語言的內涵,在這編文章裡,我們用簡短的篇幅使 linux 學習者掌握這門語言。在這篇文章裡,我們不會關注shell 每個命令的具體用法...

JPA核心內容

二 對應的狀態 三.物件之間的關係 四.單向多對一的配置 五 二級快取 id generatedvalue strategy generationtype.identity sequence auto table private long id 臨時,持久,刪除,游離 乙個持久化狀態的物件,如果被修...

Vuex核心內容 二

用於處理非同步的資料 如果通過非同步操作變更資料,必須通過action,而不能使用mutation,但是在action中還是要通過觸發mutation的方式間接變更資料。例項 const store newvuex.store mutations actions 1000 觸發actions的一種方...