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