標籤:
http://c.biancheng.net/cpp/view/6998.html
開啟文字編輯器,建立一個檔案,副檔名為sh(sh代表shell),副檔名並不影響指令碼執行,見名知意就好,如果你用php寫shell 指令碼,副檔名就用php好了。
輸入一些代碼:
- #!/bin/bash
- echo "Hello World !"
“#!” 是一個約定的標記,它告訴系統這個指令碼需要什麼解譯器來執行,即使用哪一種Shell。echo命令用於向視窗輸出文本。
運行Shell指令碼有兩種方法。
作為可執行程式
將上面的代碼儲存為test.sh,並 cd 到相應目錄:
chmod +x ./test.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這個應用程式(想象一下Windows Explorer),但我故意寫成系統,是方便理解,既然這個系統就是指shell,那麼一個使用/bin/sh作為解譯器的指令碼是不是可以省去第一行呢?是的。
作為解譯器參數
這種運行方式是,直接運行解譯器,其參數就是shell指令碼的檔案名稱,如:
/bin/sh test.sh/bin/php test.php
這種方式啟動並執行指令碼,不需要在第一行指定解譯器資訊,寫了也沒用。
再看一個例子。下面的指令碼使用 read 命令從 stdin 擷取輸入並賦值給 PERSON 變數,最後在 stdout 上輸出:
- #!/bin/bash
- # Author : mozhiyan
- # Copyright (c) http://see.xidian.edu.cn/cpp/linux/
- # Script follows here:
- echo "What is your name?"
- read PERSON
- echo "Hello, $PERSON"
運行指令碼:
chmod +x ./test.sh$./test.shWhat is your name?mozhiyanHello, mozhiyan$
第一個Shell指令碼