shell介紹及簡單編輯shell

2021-10-01 14:06:16 字數 3645 閱讀 8557

一.什麼是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中 三種引號的區別 是取引號中的輸出的結果作文值 是取引號中的內容作為乙個整體 與 作用相同但是在 值中的所有特...