Linux shell程式設計

2021-10-08 05:15:31 字數 4786 閱讀 5857

shell既是一種命令語言,又是一種程式語言(既shell指令碼)。

she可以互動式地解釋和執行使用者輸入的命令;也可以定義各種變數,傳遞引數,並提供許多高階語言所具有的流程控制結構

shell不屬於linux系統核心,可以呼叫系統核心的大部分相關功能來執行程式,建立文件並以並行的方式協調各個程式的執行。

1、資源重定向:既使用使用者指定的檔案來獲取或接收資訊。

輸入重定向:命令《檔名

以wall命令舉例:wall輸出重定向:命令》檔名

以cat命令舉例:cat /etc/passwd>file

系統會清空file檔案,並將/etc/passwd的結果輸出到file檔案中。

可使用》運算子,以追加形式輸出到file。

錯誤重定向:命令 2>file

以gcc命令舉例:gcc -c hello.c -o hello 2>file

系統會將gcc編譯時產生的錯誤資訊輸出到檔案file中。

2、管道:將多個簡單命令連線起來,管道符號為 |

舉例:ls -l /etc | grep init

輸出/etc目錄下包含init的關鍵字的檔案詳細資訊。

3、命令連線符:連線多條shell指令

; 連線符:前後命令,先後次序依次執行。

&&連線符:前後命令,執行遵循邏輯與關係。

||連線符:前後命令,執行遵循邏輯或關係。

4、文字提取器命令:提取文件或標準輸出的文字資訊

awk [-f 分隔符1] 『』

例:cat /etc/passwd| awk -f: 『』

解釋:分隔符1指定原始檔的分隔符,預設的情況下,以空格預設為分隔符。

分隔符2指定列印內容中的分隔符,預設的情況下,列印的內容不進行分隔。

$1和$3分別代表文字分割後的第一項和第二項的內容。

第乙個shell程式
#!/bin/sh

data=

"first shell script:"

echo

"data is:"

echo

$data

exit 0

shell中以#開頭的一般為注釋行,

第一行的#!/bin/sh是一種特殊的注釋,#!後的引數表明了系統將會呼叫那個程式來執行該指令碼。

1、變數的定義

變數名=值

注意:無須定義,沒有細緻的分類,給變數賦值時,賦值號兩邊不能有空格,需把值放在單引號和雙引號之間。

例:var='hello shell'

2、變數的引用

使用$符號來引用變數

例:

var=

"hello"

echo

$var 輸出var的值,hello

echo

"$var" 輸出var變數中儲存的值,hello

echo

'$var' 輸出為原樣,$var

3、變數的輸入

通過read關鍵字讀取變數。

read  tmp
4、變數的分類

1)環境變數,又成永久變數

使用export設定

export num=1
2)位置變數

既執行指令碼時傳入指令碼對應指令碼位置的變數。

例:

#!/bin/sh

echo

"var:"$#

echo

"var name:"

$0echo

"first var:"

$1echo

"second var:"

$2echo

"third var:"

$3exit 0

執行:sh file a b c

由輸出結果可分析位置變數

var:3

var name:first

first var:a

second var:b

third var:c

3)標準變數

標準變數也是環境變數,在bash環境建立時生成。

通過檢視etc目錄下的profile檔案可以檢視系統中的標準環境變數

4)特殊變數

? 	前乙個命令執**況,0表示成功,其他值表示失敗

$ 執行當前指令碼的當前程序id號

! 執行指令碼最後乙個命令

* 傳遞給指令碼或函式的全部引數

5、變數的運算子

1)let 算術運算和數值表示式測試

例:

#!/bin/sh

i=1let i=i+2

echo

"i="

$ilet i=i+4

echo

"i="

$i

輸出結果:

i=3

i=7

2)expr 對整形變數進行算術運算

例:

#!/bin/bash

a=4b=5

let c=a+b

echo

$clet

"f = b + c"

echo

$f((d=a+c))

echo

$de=

`expr $a + $d`

echo

$e

輸出結果:

9 14 13 17

1、if條件語句

1)單分支if語句格式:

if

[條件判斷語句]

;then

fi

2)雙分支if語句

if

[條件判斷語句]

;then

else

fi

3)多分支

if

[條件判斷語句]

;then

elif

[條件判斷語句]

;then

else

fi

2、test

test 選項  引數
如檢測某個檔案是否存在

if

test -f file

then..

fi

3、select語句

格式:

select 變數 in 列表

do...

[break]

done

4、case 語句

case var in

選項 1 )

...;

;'選項 2'

)...;

;"選項 3"

)...;

;...

*)... esac

exit 0

例項:

#!/bin/sh

echo -e "a:\c"

read a

echo -e "b:\c"

read b

echo -e "select(+-*/):\c"

read var

case

$var

in'+'

)echo "a+b="

'expr $a"+" $b';;

'-')echo "a-b="

'expr $a "-" $b';;

'*')echo "a*b="

'expr $a "*" $b';;

'/')echo "a/b="

'expr $a "/" $b';;

*)echo

"error"

esac

exit 0

1、for迴圈

for 變數 in 變數列表

do...

done

2、while 迴圈

while

[表示式]

do...

done

3、until 迴圈

until

[表示式]

do...

done

[function] 函式名 [()

]

呼叫 :函式名

關鍵字:local,限制變數的作用範圍為函式中。

linux shell指令碼經典案例

linux shell 程式設計例項高階

2020/7/17 19:30

linux shell 程式設計

bin bash comments your commands go here 首行中的符號 告訴系統其後路徑所指定的程式bash即是解釋此指令碼檔案的shell程式。除第一行外,以 開頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上 這個符號表明下一行與此行會合併為同一行。有環境變...

linux shell 程式設計

1 程式設計入門 shell的簡介。從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理...

Linux Shell 程式設計

檔案描述 shell 代號 dev stdin 標準輸入,一般指的是鍵盤輸入 dev stdout 標準輸出,一般指終端顯示器 dev stderr 標準錯誤,一般指終端顯示器 l輸出重定向 l輸入重定向 l追加重定向 l錯誤重定向 2 l輸出和錯誤同時重定向 應用例子 1.將 ls的結果輸出到檔案...