shell指令碼檔案無需編譯,只需要由直譯器解析即可。因此,修改許可權後的指令碼檔案可直接執行。執行shell指令碼有以下3種方式。
作為可執行程式
執行指令碼檔案test.sh,如例所示。
./test.sh
linux@ubuntu:~/1000phone$ ./test.sh //執行指令碼檔案
hello world //指令碼檔案的輸出結果
linux@ubuntu:~/1000phone$
如例,將指令碼檔案視為二進位制的可執行程式,執行的方式為「./***.sh」。執行指令碼時,linux系統會根據全域性環境變數path所指定的路徑尋找該指令碼而path在未修改的情況下,一定不會指定當前指令碼檔案所在的路徑。因此,使用「./」表示通知系統,在當前目錄下尋找。
指定環境變數
如果使用者希望在系統的任何工作目錄下都可以執行某一特定目錄中的shell指令碼檔案,只需將shell指令碼所在的目錄新增到環境變數path中即可。
將例展示的指令碼檔案所在的路徑新增到整個環境變數中,具體操作如例所示。
linux@ubuntu:~/1000phone$ ls
test.sh //指令碼檔案
linux@ubuntu:~/1000phone$ export path=/home/linux/1000phone:$path
//指定指令碼檔案所在路徑
linux@ubuntu:~/1000phone$ cd //切換到主目錄,也可切換到其他任意目錄
linux@ubuntu:~$ test.sh //直接輸入指令碼檔名即可執行指令碼,無需再指定路徑
hello world //指令碼的執行結果
linux@ubuntu:~$
上述示例中,指令碼檔案test.sh所在的路徑為「/home/linux/1000phone」。因此,使用export命令臨時在path變數中新增該路徑。完成路徑新增後,即可在任意目錄下直接輸入檔名執行指令碼檔案,無需再指定路徑。
作為直譯器引數
除了上述的執行方式外,使用者還可以選擇直接執行直譯器,其引數為指令碼檔名,如例所示。
linux@ubuntu:~/1000phone$ sh test.sh //直接執行直譯器,將指令碼檔案作為引數
hello world
linux@ubuntu:~/1000phone$
按照例所示的方式執行指令碼檔案,其第一行無需指定直譯器資訊。如果需要使用的shell為bash,則將例中的sh替換為bash即可。 shell指令碼執行方式
echo輸出命令 echo 選項 輸出內容 選項 e 支援反斜線控制的字元轉換 shell指令碼 指令碼都以.sh結束,指令碼第一行 bin bash 以hello.sh簡單指令碼為例 指令碼執行有兩種方法 這裡出現了no such file or directory 原因是格式不匹配,解決方案 d...
shell 指令碼的執行方式
執行shell指令碼的方式基本上有三種 1 輸入定向到shell指令碼 這種方式是用輸入重定向方式讓shell從給定檔案中讀入命令列並進行相應處理。其一般形式是 bash 指令碼名 例如 bash 2 以指令碼名作為引數 其一般形式是 bash 指令碼名 引數 例如 bash ex2 usr men...
執行Shell指令碼的方式
執行shell指令碼的方式基本上有三種 1 輸入定向到shell指令碼 這種方式是用輸入重定向方式讓shell從給定檔案中讀入命令列並進行相應處理。其一般形式是 bash 指令碼名 例如 bash shell從檔案ex1中讀取命令列,並執行它們。當shell到達檔案末尾時就終止執行,並把控制返回到s...