Linux Shell 學習筆記 二

2021-06-27 23:38:06 字數 1211 閱讀 1175

第乙個shell指令碼

新建乙個檔案,擴充套件名為sh(sh代表shell),副檔名並不影響指令碼執行,見名知意就好,如果你用php寫shell 指令碼,副檔名就用php好了。

「#!」 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種shell。echo命令用於向視窗輸出文字。

執行shell指令碼有兩種方法。

一  作為可執行程式

將上面的**儲存為test01.sh,並 cd 到相應目錄:

chmod  +x  ./test01.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告訴系統說,就在當前目錄找。

通過這種方式執行bash指令碼,第一行一定要寫對,好讓系統查詢到正確的直譯器。

這裡的"系統",其實就是shell這個應用程式,寫成系統,是方便理解,既然這個系統就是指shell,那麼乙個使用/bin/sh作為直譯器的指令碼是不是可以省去第一行呢?是的。 

二  作為直譯器引數

這種執行方式是,直接執行直譯器,其引數就是shell指令碼的檔名,如:

/bin/sh test.sh

/bin/php test.php

這種方式執行的指令碼,不需要在第一行指定直譯器資訊,寫了也沒用。

再看乙個例子。

下面的指令碼使用 read 命令從 stdin 獲取輸入並賦值給 person 變數,最後在 stdout 上輸出:

執行指令碼:

Linux Shell程式設計學習筆記 二 函式

這次我們回顧一下函式的定義,在此之前,如我們學習結構化程式設計一樣,任何語言都脫離不了某種正規化,我們先從這些正規化入手。首先是條件判斷。具體的結構是 if condition then command elif condition then commands else command ficond...

linux shell學習筆記

shell程式 將一系列linux程式通過流程控制寫在乙個文字檔案中,由shell讀取此文字檔案並且依次執行檔案中的程式。例子 bin bash 代表shell程式的注釋 echo hello linux echo this is a shell file.shell程式中需要用變數來儲存程式中的資...

Linux Shell 程式設計學習(二)

case多選結構 基本結構 case word in case 1 command 1 case 2 command 2 case 3 command 3 case n command n esac 乙個demo while 迴圈 while test commands do command sel...