第一個shell腳本
#!/bin/bash
echo "Hello world!"
1、關(guān)于#!
在腳本開頭的 sha-bang (#!) 是告訴系統(tǒng)這個文件是由特定命令解釋器解釋的一組命令瀑晒。 那個 #! 實際上是兩個字節(jié)的 魔數(shù), 魔數(shù)是指定文件類型的特殊記號维苔,在此是表示這是一個可執(zhí)行的shell腳本(鍵入 man magic可了解更多的信息)。緊跟著#!的是一個路徑名.這個路徑名是解釋這個腳本內(nèi)命令的命令解釋器程序的路徑:可能是一個shell采郎,也可能是一個編程語言或者是一個軟件包程序千所。這個命令解釋器能執(zhí)行腳本內(nèi)的命令語句。它從腳本開頭(即從#!所在行的下一行)起執(zhí)行蒜埋,但是忽略注釋行淫痰。
#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f
上面每一個腳本頭行都是不同的命令解釋器,如果第一行是/bin/sh, 那就是默認(rèn)的Shell(Linux系統(tǒng)中bash是默認(rèn)的shell)整份,否則的話就是其他的解釋器.如果使用#!/bin/sh(因為大多不同的商業(yè)UNIX都使用Bourne shell為默認(rèn)shell)可以使腳本能夠移植到非Linux的機器上待错,雖然這樣做你將不能使用Bash許多特有的屬性籽孙。但這樣做的腳本遵循 POSIX sh標(biāo)準(zhǔn).
值得注意的是,在"#!"后面提供的路徑必須是正確的火俄,否則你運行腳本只會收到通常像"Command not found"那樣的錯誤信息犯建。
如果腳本程序只是由一組普通的系統(tǒng)命令而沒有使用Shell內(nèi)置命令的話#!將被忽略。再次提醒使用#!/bin/sh將調(diào)用默認(rèn)的命令解釋器瓜客,這在Linux系統(tǒng)上是/bin/bash.
2适瓦、關(guān)于echo
echo命令是一個系統(tǒng)的內(nèi)建命令(builtin)。用于I/O操作谱仪。在這里我們利用echo命令來輸出一行字符串玻熙。
3、關(guān)于運行方式
接著嘗試運行這個腳本:
Hello world!
可以使用的方法有(假設(shè)文件的名字為hello.sh):
1.bash hello.sh
直接使用bash腳本運行hello.sh 這個腳本
2.chmod +x hello.sh
./hello.sh
給這個腳本添加運行權(quán)限之后直接調(diào)用疯攒。運行時腳本會根據(jù)#嗦随!后面的內(nèi)容確定運行腳本的程序。即使用/bin/bash 卸例。
與此類似的称杨,我們還可以將腳本放入系統(tǒng)環(huán)境變量的search path里面。比如在mac下的/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin之類的目錄下筷转。這樣就能夠直接用hello.sh
這種方式來運行這個腳本了姑原。