在初步了解了shell的基本概念和特點之後,我們接下來就開始正式的學習shell語言。
這裡我們建立第乙個shell指令碼檔案,命名為myshell.sh。
開啟檔案,在檔案中寫入如下內容,然後儲存並退出。
#!/bin/bash
echo "hello world"
這段**的效果相當於我們在學習c語言時寫的第乙個hello world的**。
#!是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種shell。
通常,#!的名稱叫做「shebang」或者「she-bang」。
在shell指令碼中用#表示注釋,相當於c語言中的//。
echo命令用於向視窗輸出文字。
執行shell指令碼有兩種方式:
1、作為可執行程式
chmod +x ./myshell.sh 使指令碼具有執行許可權;
./myshell.sh 執行指令碼。
2、作為直譯器引數
這種執行方式是直接執行直譯器,其引數就是shell指令碼的檔名。這種方式執行的指令碼,不需要在第一行指定直譯器資訊,寫了也沒有用。
為了簡便書寫,我們也可以寫成如下這種方式:
還有一種更簡便的書寫方式:
在一般情況下,人們並不區分bourne shell和bourne again shell。所以,像#!/bin/sh,它同樣可以改為#!/bin/bash。因此,我們執行bash filename與sh filename都可以得出結果。所以我們比較推薦最後這種寫法,畢竟最簡單。
shell會fork乙個子程序並呼叫exec執行./myshell.sh這個程式,exec系統呼叫應該把子程序的**段替換成./myshell.sh程式的**段,並從它的_start開始執行。然而myshell.sh是個文字檔案,根本沒有**段和_start函式,那怎麼辦呢?其實exec還有另外一種機制,如果要執行的是乙個文字檔案,並且第一行用shebang指定了直譯器,則用直譯器程式的**段替換當前程序,並且從直譯器的_start開始執行,而這個文字檔案被當做命令列引數傳給直譯器。
shell指令碼學習筆記(1)
變數沒有型別,直接賦值就可以,類似這樣 name geekgao 引用的時候這樣 name 或者 單引號 中間不能引用變數,也不能使用 轉義。就是說,這裡面的內容會保持原樣。雙引號 允許使用 或者 引用變數,可以使用轉義 反撇號或者 中間是一句可執行的命令,不能直接一行開始就寫個 ls 或者 ls ...
指令碼學習 shell指令碼入門 符號篇
shell變數不需要進行任何宣告,直接定義即可,因為shell變數的值實際上都是字串 對於沒有定義的變數預設是乙個空串 定義的時候shell變數由大寫字母加下劃線組成,並且定義的時候等號兩邊不能存在空格,否則會被認為是命令!shell變數的種類 利用printenv可以顯示當前shell程序的環境變...
Shell指令碼筆記 1
函式別名 設定別名 alias name command alias ll ls las 取消別名 unalias name 求取數學表示式 value 6 3 value 6 3 let value 1 定義區域性變數 local value 定義整數 declare i value 命令替換 v...