shell指令碼初識

2021-10-01 21:53:18 字數 2152 閱讀 8975

@[shell指令碼初識]

了解shell

shell是乙個用c語言編寫的程式,它是使用者使用linux的橋梁。shell既是一種命令語言,又是一種程式語言。

指令碼結構

shell指令碼(shell script),即為一種shell編寫的指令碼程式;

開頭要以#!/bin/bash或是#!/bin/sh ,此特殊符號是用來告知系統,這個指令碼用哪種直譯器來執行,即使用那種shell

注釋以#開頭表明注釋

命令列的書寫格式:一行一條命令或一行多個命令,用分號分割 長命令可以使用反斜線字元

開啟文字編輯器(可以使用vi或vim命令來建立檔案),新建檔案test.sh,副檔名是sh(sh代表shell),副檔名並不影響指令碼的執行,見名知義即可。

#!/bin/bash

echo 「hello world!」

1.作為可執行程式

將上面的**儲存為test.sh,並cd進入到相應目錄

chmod +x 。/test.sh #使指令碼具有執行的許可權

./test.sh #執行指令碼

注意,一定要寫成./test.sh,而不是test.sh,執行其他二進位制的程式也一樣,直接寫test.sh,linux系統會去path裡面尋找有沒有test.sh的,只有/bin,/sbin,/usr/bin,/usr/sbin等在path裡,你的當前目錄通常不在path裡,所以寫成test.sh 是會找不到命令的,要用./test.sh告訴系統說,就在當前目錄找

直譯器引數

這種執行方式是,直接執行直譯器,其引數是shell指令碼的檔名,如:/bin/sh test.sh

1>了解系統變數

系統定義的變數

bash=/bin/bash bash shell名稱

bash_version=4.1.2(1)bash版本

home=/home/linuxtechi使用者家目錄

logname=linuxtechi當前登入使用者的名字

ostype=linux作業系統型別

path=/usr/bin;/sbin;/bin;/usr/sbin可執行檔案搜尋路徑

pwd=/home/linuxtechi **當前工作目錄「」

shell=/bin/bashshell名稱

username=linuxtechi當前登入的使用者名稱

1>在shell指令碼中,所有的變數都由字串組成,且不用宣告

2>使用者變數可以是任何不超過20個的字母、數字、下劃線字元的文字字串(變數只能以字母或下劃線開頭)。使用者變數是對大小寫敏感的,因此,var1和var1是兩個不同的變數

命名變數:

變數名=變數值

特殊變數 含義

$$ shell本身的pid(process id)

$! shell最後執行的後台prcess的pid

$? 最後執行的命令的**的結束值

$- 使用set命令設定的flag一覽

∗ 所有

引數列表

。如用「

* 所有引數列表。如用「

∗所有引數列

表。如用

「*」括起來的情況,以「$!」,「2".

..

"2"..."

2"..."

n"的形式輸出引數

@ 所有

引數列表

.如

∗@ 所有引數列表.如*

@所有引數列

表.如∗

@「用[」]括起來的情況、以」$1"、"2".

..

"2"..."

2"..."

n"的形式輸出所有引數

$# 新增到shell的引數個數

$0 shell本身的檔名

1 −1-

1−n 新增到shell的個引數值。$1是第一引數,以此類推

Shell指令碼 初識

1.在一般情況下,人們並不區分 bourne shell 和 bourne again shell,所以,像 bin sh,它同樣也可以改為 bin bash。告訴系統其後路徑所指定的程式即是解釋此指令碼檔案的 shell 程式。2.1 作為可執行程式 將 儲存為 test.sh,並 cd 到相應目...

shell指令碼 初識CGI

cgi 是web 伺服器執行時外部程式的規範,按cgi 編寫的程式可以擴充套件伺服器功能。cgi 應用程式能與瀏覽器進行互動,還可通過資料庫api 與資料庫伺服器等外部資料來源進行通訊,從資料庫伺服器中獲取資料。格式化為html文件後,傳送給瀏覽器,也可以將從瀏覽器獲得的資料放到資料庫中。幾乎所有伺...

Shell 指令碼初學

其實這個是因為伺服器卡不夠用,為了充分占用一塊卡的資源,需要寫個shell指令碼幫忙執行網路 shell是一種指令碼語言 區別於編譯語言 在unix上基本都通用。在我看來,這個指令碼主要並不是用來計算,而是用來管理打雜的。第乙個程式,還是輸出hello world吧。首先建立乙個指令碼檔案 vim ...