在每個bash指令碼的開頭都使用"#!",這用來告訴系統此檔案的執行需要指定乙個直譯器。「#!」實際上是乙個 2 位元組的魔力數字,這是指定乙個檔案型別的特殊標記,換句話說, 在這裡指是乙個可執行的指令碼(鍵入 man magic 來獲得關於這個迷人話題的更多詳細資訊)。在「#!」之後接著是乙個路徑名,這個路徑名指定了乙個解釋指令碼中命令的程式,這個程式可以是 shell,其它程式語言或任意乙個通用程式。這個指定的程式從頭開始解釋並且執行指令碼中的命令(從#!行下邊的一行開始),忽略注釋。 如:
#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f
上邊每乙個指令碼頭的行都指定了乙個命令直譯器,如果是/bin/sh,那麼就是預設shell(在 linux 系統中預設是 bash)。使用#!/bin/sh,在大多數商業發行的 unix 上,預設是 bourneshell,這將讓你的指令碼可以正常的執行在非 linux 機器上,雖然這將會犧牲 bash 一些獨特的特徵。指令碼將與 posix 的 sh 標準相一致。
注意: #! 後邊給出的路徑名必須是正確的,否則將會出現乙個錯誤訊息,通常是"command not found",這將是你執行這個指令碼時所得到的唯一結果。當然"#!"也可以被忽略,不過這樣你的指令碼檔案就只能是一些命令的集合,不能夠使用 shell 內建的指令了。
指令碼中的#!行的最重要的任務就是命令直譯器(sh 或者 bash)。因為這行是以#開始的,當命令直譯器執行這個指令碼的時候,會把它作為乙個注釋行。當然,在這之前,這行語句已經完成了它的任務,就是呼叫命令直譯器。
注:那些具有 unix 味道的指令碼(基於 4.2bsd)需要乙個 4 位元組的魔法數字,在#!後邊需要乙個空格#! /bin/sh。
手機為什麼以13開頭的?
大家都知道以前電信移動郵政還沒有分家阿,郵電資源是郵電部 現資訊產業部 統一排程的。在分配號段的時候,做了一些細緻的規劃,大體是這樣 10開頭,電信服務號碼,如103國際半自動 108國際對方付費 1000電信服務中心,1001聯通服務中心等等。11開頭,賦予特種服務號碼,如110匪警,111電信內...
初次接觸bash指令碼檔案
在 tmp 目錄下新建乙個檔案sum.sh用於寫簡單的指令碼內容 指令碼檔案用.sh字尾名,雖然linux系統沒有像windows那麼注重字尾名與檔案型別的關聯,但在寫指令碼時固定字尾名有利於以後對指令碼檔案的分辨查詢等等,這是一種好習慣。root server01 tmp vim sum.sh 指...
用C 程式刪除文字檔案中以「 」開頭的行
vc 只提供了刪除乙個空目錄的函式,而用往往希望刪除其下有很多子目錄與檔案的目錄。為了實現這一功能,下面編寫了deletedirectory 函式,它可以實現這一功能。函式原型 bool deletedirectory char dirname 返回值 成功刪除時返回true,否則返回false 引...