最近學習了bash編程。掌握了一些知識,在這里就算是好好整理一下知識點,歸個類,加深一些理解。
1.bash簡介
linux內核是linux系統專門和硬件打交道的程序,Linux系統中我們所有的程序都是在linux內核之上,最終交付給內核再去調用硬件去執行的。
bash是一個專門為GNU計划編寫的Unix shell,在linux系統上我們就可以理解為一個告訴系統內核去做什么任務的程序組件,也被稱之為腳本語言和解釋性語言。相比與其他類的語言,bash是和系統更近,更加適合與系統有關的程序編寫。
內核作為linux的核心部件,內核的安全直接決定的系統運行的穩定性。shell的另一個很重要的作用就是對內核起到了一定的保護作用,防止用戶的一下誤操作,即使shell可以對內核進行修改。 從某種程度上來說和c++/java等高級語言的類封裝是類似的。
2.bash的運行
由於shell有很多種。因此,在linux系統也有許多運行的方法,在一些其他的系統種也可能有自己的shell。甚至遇到了一些自己運行的bash腳本報錯的情況(也可能是我不會的錯誤寫在了上面)。
bash的運行可以直接在終端運行,也可以在桌面環境執行運行。比如有一個test.sh文件,終端運行有如下集中方法
1. bash test.sh 調用bash去執行文件
2. sh test.sh 調用shell去執行文件
3. sh ./test.sh 系統以默認的執行程序(shell)去執行該文件,但是由於系統
只會在環境變量位置中去尋找置中去尋找文件名,所以加上 ./ 告訴系統在當先位置執行
另一種桌面上就以選擇是運行還是打開,不多做說明
3.從基本開始學習
程序1:
#!/bin/bash
printf "hello %s\n" world!
echo hello world!
運行結果:
代碼說明:
第1行說明以何種程序去運行,樣列是用/bin/文件夾下的bash去執行。應該只會影響到沒有明確說明如何去執行的程序,但是我去掉之后完全沒影響。因次,很多系統都會正確執行,這里只說明一下用途,而且后續的程序都會加上這一行。
第2行printf是和我們 c/c++ 種的語言一樣是標准輸出,只不過沒有空格,后面也沒有逗號。里面的替換和c中一樣。因此,詳細了解可以查轉移字符,不在過多說明。
第3行echo是Linux系統的一個輸出函數,把后面的信息輸出到輸出設備種。
默認情況下
程序2:
#!/bin/bash
#hello world
:<<$
asdf;ljk
asdfklk;
asdfl;
$
echo hello world!
運行結果:
第2行:# 開頭的信息是bash中的注釋行,后面的信息在bash中並不會去執行
第3-7行是bash的多行注釋其中格式為
:<<$
注釋信息
$
其中的$只要是一個字符即可,有很多種,甚至是一個字母。但要保證前后照應
下一篇講解變量