一.什麼是shell及作用
shell字面理解就是個「殼」,是作業系統(核心)與使用者之間的橋梁,充當命令直譯器的作用,將使用者輸入的命令翻譯給系統執行。linux中的shell與windows下的dos一樣,提供一些內建命令(shell命令)供使用者使用,可以用這些命令編寫shell指令碼來完成複雜重複性的工作
什麼是指令碼?
指令碼就是由shell命令組成的件,這些命令都是可執行程式的名字,指令碼不用編譯即可執行。它通過直譯器解釋執行,所以速度相對來說比較慢。
shell指令碼的優點
1.自動化管理的重要依據
2.追蹤與管理系統的重要工
3.簡單偵測功能
4.連續指令單一化
5.簡易的資料處理
6.跨平台支援與學習歷程較短
編寫shell指令碼注意事項
指令的執行是從上而下、從左而右的分析與執行;
指令的下達就如同之前提到的:指令、選項與引數間的多個空白都會被忽略掉;
空白行也將被忽略掉,並且 [tab] 按鍵所推開的空白同樣視為空白鍵;
如果讀取到乙個 enter 符號(cr),就嘗試開始執行該行(或該串)命令;
至於如果一行的內容太多,則可以使用「 [enter] 」來延伸至下一行;
「 # 」可做為註解!任何加在 # 後面的資料將全部被視為註解字而被忽略!
執行shell指令碼分為四點
直接指令下達: shell.sh 件必須要具備可讀與可執行(nx) 的許可權,然後:
絕對路徑:使用/home/dtsai/shell.sh 來下達指令;
相對路徑:假設工作目錄在/home/dmtsai/,則使用.shel.sh 來執行
*變數"path"功能:將shell.sh放在path指定的目錄內,例如: ~/bin/
以bash程式來執行:通過「bash shell,sh」或「sh shell.sh "來執行
二.簡單編輯shell
[root@localhost ~]# vim zjz.sh
#!/bin/bash
echo -e 「hellow \a \n」
exit 0
[root@localhost ~]# chmod a+x zjz.sh
[root@localhost ~]# sh zjz.sh
hellow
1.第一行 #!/bin/bash 在宣告這個 script 使用的 shell 名稱:
2.程式內容的說明:
3.主要環境變數的宣告:建議務必要將一些重要的環境變數設定好,我個人認為, path 與 lang (如果有使用到輸出相關的資訊時)是當中最重要的!如此一來,則可讓我們這支程式在進行時,可以直接下達一些外部指令,而不必寫絕對路徑呢!
4.主要程式部分就將主要的程式寫好即可
5.執行成果告知(定義回傳值)乙個指令的執行成功與否,可以使用$?這個變數來觀察~那麼我們也可以利用 exit 這個指令來讓程式中斷,並且回傳乙個數值給系統
\a 發出警告聲;\n 換行且游標移至行首;
對談式指令碼:變數內容由使用者決定量
隨日期變化:利用date進行件的建立
數值運算:簡單的加減乘除
對談式指令碼:變數內容由使用者決定量
[root@localhost ~]# vim zjz1.sh
#!/bin/bash
read -p "please input your first name: " firstname
read -p "please input your last name: " lastname
echo -e 「\nyour full name is: $ $」
[root@localhost ~]# sh zjz1.sh
please input your first name: x
please input your last name: a
your full name is: x a
隨日期變化:利用date進行件的建立
[root@localhost ~]# vim zjz2.sh
#!/bin/bash
echo -e 「i will use 『touch』 command to create 3 files.」
read -p "please input your filename: "
fileuserfilename=fil
euse
r:−"
file
name
"dat
e1=date1=
fileus
er:−
"fil
enam
e"da
te1=
(date --date=『2 days ago』 +%y%m%d)
date2=(da
te−−
date
=′1d
aysa
go′+
date
3=(date --date='1 days ago' +%y%m%d) date3=
(date−
−dat
e=′1
days
ago′
+dat
e3=(date +%y%m%d)
file1=fil
enam
efilena
mefile2=fil
enam
efilena
mefile3=fil
enam
efilena
metouch 「fil
e1"t
ouch
"" touch "
file1"
touc
h"」touch 「$」
數值運算:簡單的加減乘除
[root@localhost ~]# vim zjz4.sh
#!/bin/bash
echo -e 「you should input 2 numbers, i will multiplying them! \n」
read -p "first number: " firstnu
read -p "second number: " secnu
total=((((
((*$))
echo -e 「\nthe result of $ x $ is ==> $」
[root@localhost ~]# sh zjz4.sh
you should input 2 numbers, i will multiplying them!
first number: 2
second number: 3
the result of 2 x 3 is ==> 6
利用test指令的測試功能
編輯簡單的 shell程式
知道了vi編輯器的使用規則之後,結合 shell 的使用規則,可以編輯簡單的 shell 程式試試手 題目如下 1.用while語句建立乙個根據輸入的數值求累加和 1 2 3 n 的shell程式。shell程式如下 bin bash filename ab echo n please input ...
shell開發之簡單介紹
shell指令碼是解釋型語言,網上隨便搜一下,就知道其定義,但是可能很多初學者最後還是一頭霧水。所以我是以直接 通俗的方式進行解釋各種問題,不想弄得那麼文縐縐的。咱們學技術的,就別那麼折騰。解釋型語言,就是不生成執行檔案,不能放到記憶體裡面直接執行,而通過shell程式解釋成機器語言後,再放到記憶體...
shell指令碼的簡單介紹
shell寫指令碼的三部曲 建立 內容 許可權 shell中的變數分類 自定義變數 系統變數 pash user uid 1 2.read p 提示 變數名 定義變數,不賦值 在shell中 三種引號的區別 是取引號中的輸出的結果作文值 是取引號中的內容作為乙個整體 與 作用相同但是在 值中的所有特...