第一個shell腳本

打開文本編輯器,新建一個文件,擴展名爲sh(sh表明shell),擴展名並不影響腳本執行,見名知意就好,若是你用php寫shell 腳本,擴展名就用php好了。php

輸入如下代碼:linux

#!/bin/bash
echo "Hello Word"

「#!」是一個約定的標記,他告訴系統這個腳本須要什麼解釋器來執行,即便用哪種Shell。echo命令用於向窗口輸出文本。shell

 

運行Shell腳本有兩種方法。bash

做爲可執行程序

將上面的代碼保存爲guojg.sh編輯器

[root@lvs-2 bash]# ls
 guojg.sh
[root@lvs-2 bash]# chmod +x guojg.sh   #使腳本具備執行權限
[root@lvs-2 bash]# ./guojg.sh #執行腳本
Hello Word

注意,必定要寫成./test.sh,而不是test.sh。運行其它二進制的程序也同樣,直接寫test.sh,linux系統會去PATH裏尋找有沒有叫test.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH裏,你的當前目錄一般不在PATH裏,因此寫成test.sh是會找不到命令的,要用./test.sh告訴系統說,就在當前目錄找。spa

經過這種方式運行bash腳本,第一行必定要寫對,好讓系統查找到正確的解釋器。code

這裏的"系統",其實就是shell這個應用程序(想象一下Windows Explorer),但我故意寫成系統,是方便理解,既然這個系統就是指shell,那麼一個使用/bin/sh做爲解釋器的腳本是否是能夠省去第一行呢?是的。blog

做爲解釋器參數

這種運行方式是,直接運行解釋器,其參數就是shell腳本的文件名,如:class

[root@lvs-2 bash]# /bin/sh guojg.sh 
Hello Word

這種方式運行的腳本,不須要在第一行指定解釋器信息,寫了也沒用。test

再看一個例子。下面的腳本使用 read 命令從 stdin 獲取輸入並賦值給 PERSON 變量,最後在 stdout 上輸出:

#!/bin/bash
echo "What is your name?"
read name
echo "Hello,$name"

運行腳本:

[root@lvs-2 bash]# chmod +x guojg.sh 
[root@lvs-2 bash]# ./guojg.sh 
 What is your name?
 guojg                      
 Hello,guojg
相關文章
相關標籤/搜索