shell基礎入門

2021-07-25 13:15:19 字數 3099 閱讀 5368

linux中有好多中不同的shell,但是通常我們使用bash (bourne again shell) 進行shell程式設計,因為bash是免費的並且很容易使用。所以在本文中筆者所提供的指令碼都是使用bash(但是在大多數情況下,這些指令碼同樣可以在 bash的大姐,bourne shell中執行)。 

如同其他語言一樣,通過我們使用任意一種文字編輯器,比如nedit、kedit、emacs、vi 

等來編寫我們的shell程式。 

程式必須以下面的行開始(必須方在檔案的第一行): 

#!/bin/sh 

符號#!用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用/bin/sh來執行程式。 

當編輯好指令碼時,如果要執行該指令碼,還必須使其可執行。 

要使指令碼可執行: 

chmod +x filename 

然後,您可以通過輸入: ./filename 來執行您的指令碼。 

注釋 在進行shell程式設計時,以#開頭的句子表示注釋,直到這一行的結束。我們真誠地建議您在程式中使用注釋。如果您使用了注釋,那麼即使相當長的時間內沒有使用該指令碼,您也能在很短的時間內明白該指令碼的作用及工作原理。 

變數 在其他程式語言中您必須使用變數。在shell程式設計中,所有的變數都由字串組成,並且您不需要對變數進行宣告。要賦值給乙個變數,您可以這樣寫: 

變數名=值 

取出變數值可以加乙個美元符號($)在變數前面: 

?

1

2

3

4

5

6

#!/bin/sh

#對變數賦值:

a="hello world"

# 現在列印變數a的內容:

echo"a is:"

echo$a

複製**

**如下:

#!/bin/sh 

for var in a b c ; do 

echo "var is $var" 

done 

下面是乙個更為有用的指令碼showrpm,其功能是列印一些rpm包的統計資訊: 

?

1

2

3

4

5

6

7

8

9

10

11

12

#!/bin/sh

# list a content summary of a number of rpm packages

# usage: showrpm rpmfile1 rpmfile2 ...

# example: showrpm /cdrom/redhat/rpms/*.rpm

forrpmpackagein$*;do

if[ -r"$rpmpackage"];then

echo"*************** $rpmpackage **********===="

rpm -qi -p $rpmpackage

else

echo"error: cannot read file $rpmpackage"

fi

done

這裡出現了第二個特殊的變數$*,該變數包含了所有輸入的命令列引數值。如果您執行showrpm openssh.rpm w3m.rpm webgrep.rpm 

此時 $* 包含了 3 個字串,即openssh.rpm, w3m.rpm and webgrep.rpm. 

引號 在向程式傳遞任何引數之前,程式會擴充套件萬用字元和變數。這裡所謂擴充套件的意思是程式會把萬用字元(比如*)替換成合適的檔名,它變數替換成變數值。為了防 止程式作這種替換,您可以使用引號:讓我們來看乙個例子,假設在當前目錄下有一些檔案,兩個jpg檔案, mail.jpg 和tux.jpg。 

這將列印出"mail.jpg tux.jpg"的結果。 

引號 (單引號和雙引號) 將防止這種萬用字元擴充套件: 

這將列印"*.jpg" 兩次。 

單引號更嚴格一些。它可以防止任何變數擴充套件。雙引號可以防止萬用字元擴充套件但允許變數擴充套件。 

#!/bin/sh 

echo $shell 

echo "$shell" 

echo '$shell' 

執行結果為: 

/bin/bash 

/bin/bash 

$shell 

最後,還有一種防止這種擴充套件的方法,那就是使用轉義字元——反斜桿: 

這將輸出: 

shell入門基礎

shell基礎知識 shell是linux的外殼,它包在linux核心的外面,為使用者和核心之間的互動提供乙個介面 當使用者下達指令給作業系統,實際上是把指令告訴給shell,經過shell解釋,處理後核心做出相應的動作 系統的回應和輸出資訊由shell處理,然後顯示在使用者螢幕上 檢視系統預設sh...

shell基礎和簡單入門

1 shell簡介 shell提供了使用者和核心進行互動操作的一種介面,它接收使用者的命令並送入核心執行。shell指令碼語言是linux unix系統上應用廣泛的實用程式語言,所以對於任何乙個希望精通linux作業系統的人,掌握shell指令碼知識都是非常必要的。而它的特點是容易學習,但是精通很難...

shell入門 基礎命令篇

diff 命令 diff 命令是用來比較兩個檔案或目錄的不同 diff 在比較檔案過程中結果讀取方式 num1 num2 a c d num3,num4 num1,num2 表示在第乙個檔案中的行數 a 表示新增 add c 表示更改 change d 表示刪除 delete 表示第乙個檔案中的內容...