SHELL編程
一切的代碼都是對簡單的基本語句進行組裝,按照自己的意願進行編寫,最終得到想要的功能程式。
1、開頭: #。 /bin/bash
#。是告訴系統後面的參數用來執行檔案的程式。下面的代碼作為輸入,進入到bash環境中執行。
2、注釋 #後面的就是注釋。
3、設定執行許可權。chmod u+x 檔案名稱
在剛建立shell檔案時候,程式預設為644(umask)使用上面命令,使該shell檔案可執行。在terminal中輸入檔案名稱即可執行。
4、執行shell的幾種方法,
bash 檔案名稱、 實際上是調用一個新的bash命令解釋程式,把shell程式檔案名稱作為參數傳遞給它。
bash < 檔案名稱。 與上一條差不多,進行輸入重新導向,使shell的輸入取自製定的程式檔案。
在執行shell程式時候,最好按照這樣的順序: 對一個剛建立的shell還沒有正確性把握,應使用bash + 檔案名稱的方式進行調試,但是一旦當shell固定那麼就用chmod命令把檔案設定成可執行,以後只需要輸入相應名字就可以執行該shell指令碼。
5、bash程式的調試
bash + 選項 + 程式檔案名稱
-e遇到失敗的命令就退出
-n讀入命令但是不執行命令。
-u置換時把未設定的變數看作出錯。
-v當讀入shell輸入行時候,把它們顯示出來。
-x執行命令時把命令和它們的參數顯示出來
在進行shell程式的編寫的時候,可以寫set -選項 與 set + 選項在這兩個選項之間寫的代碼可以按照該選項功能來進行調試。
6、bash內部命令。
bash命令解釋程式包含了一些內部命令。
echo eval exec(直接執行制定的命令,接下來的來源程式的命令不執行直接終止進程。) export
readonly read shift wait exit .(點)
7、shell中的位置參數。
shell程式特別有意思的就是它的參數是在調用shell程式的命令列中按照各自的位置決定的。在程式名之後輸入位置參數,參數之間用空格進行區分。第一個參數就替換$1一次類推。特殊的是$0,它的內容是當前這個shell程式的檔案名稱,所以$0不是一個位置參數,在顯示當前所有位置參數的時候是不包括$0的。
8、shell環境變數。
shell在開始執行的時候,就已經定義了一些與系統工作環境相關的變數,使用者可以重新進行定義,改編成適合自己使用的。
HOME: 用於儲存使用者宿主目錄的完全路徑名。
TERM:終端的類型。
PATH:用於儲存用冒號分隔的路徑名,shell按照PATH變數給出的路徑順序進行搜尋這些目錄,找到的第一個命令名稱一致的可執行檔將被執行。
PS1: 主提示符,root為# 普通使用者為$、
PS2:在shell結合搜使用者輸入命令的過程中,如果使用者輸入”\“則表示該命令還沒有輸入完成,下一行仍繼續輸入,這個參數就是那個提示符,">"
9、預定義的變數。
也是在一開始就定義了的變數,不同的是,使用者只能根據shell的定義來使用這些變數
常用的預定義變數入下:
$# 位置參數的數量 $* 所有位置參數的內容 $? 命令執行後的返回狀態,可以產看上一個命令的執行是否成功。
$$ 當前進程的進程號 $! 後台啟動並執行最後一個進程號 $0 當前執行的進程名。
10、參數置換變數
shell提供了參數置換功能 讓使用者可以根據不同的條件來給變數賦不同的值,參數置換的變來那個有四種,唯寫變來那個通常與摸一個位置參數系那個聯絡,根據制定的位置參數是否已經設定決定變數的取值。
變數=${參數-word} 如果設定了參數,那麼用參數替換變數的值,否則就用word進行替換,這種變數的值,等於摸個參數的值,
變數=${參數=word} 如果設定了參數,則用參數替換變數的值,否則把變數設定成word,然後再用word替換參數的值, 位置參數不能用這種方式,
變數=${參數=。word} 如果設定了參數,那麼參數的值替換斌兩的值,否則就顯示word並從shell中退出,如果省略了word,則顯示標準資訊,這種變數要求一定等於摸一個參數的值,如果該參數沒有設定,就顯示一個資訊,容納後蕊初,
變數=${參數+Word} 如果設定參數,那麼Word替換,否則不替換,