@[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 ...