打開文本編輯器,新建一個文件,擴展名為 sh(sh 代表 shell),擴展名并不影響腳本執(zhí)行,見名知意就好,如果你用 php 寫 shell 腳本,擴展名就用 php 好了。
輸入一些代碼:
#!/bin/bash
echo "Hello World !"
“#!” 是一個約定的標記,它告訴系統(tǒng)這個腳本需要什么解釋器來執(zhí)行,即使用哪一種 Shell。echo命令用于向窗口輸出文本。
運行 Shell 腳本有兩種方法。
將上面的代碼保存為 test.sh,并 cd 到相應目錄:
chmod +x ./test.sh #使腳本具有執(zhí)行權限
./test.sh #執(zhí)行腳本
注意,一定要寫成 ./test.sh,而不是 test.sh。運行其它二進制的程序也一樣,直接寫test.sh,linux 系統(tǒng)會去 PATH 里尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的當前目錄通常不在 PATH 里,所以寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統(tǒng)說,就在當前目錄找。
通過這種方式運行 bash 腳本,第一行一定要寫對,好讓系統(tǒng)查找到正確的解釋器。
這里的"系統(tǒng)",其實就是 shell 這個應用程序(想象一下 Windows Explorer),但我故意寫成系統(tǒng),是方便理解,既然這個系統(tǒng)就是指 shell,那么一個使用 /bin/sh 作為解釋器的腳本是不是可以省去第一行呢?是的。
這種運行方式是,直接運行解釋器,其參數(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.sh
What is your name?
mozhiyan
Hello, mozhiyan
$