一、什么叫shell腳本
一句話概述,shell編程就是對一堆Linux命令的邏輯化處理。
二、區分shell和shell編程
Shell
Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。
Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。
Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個典型的圖形界面 Shell。
Shell 腳本
Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。
業界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。
由於習慣的原因,簡潔起見,本文出現的 "shell編程" 都是指 shell 腳本編程,不是指開發 shell 自身。
三、shell編程練習工具
四、
第一個shell程序
#!/bin/bash #第一個shell小程序 echo hello world!
以上,我們的第一個shell小程序就完成了,結果當然是輸出我們熟悉的hello world。
第一行表示我們選擇使用bash shell。
shell中#符號表示注釋。shell的第一行比較特殊,一般都會以#!開始來指定使用的shell類型。在linux中,除了bash shell以外,還有很多版本的shell, 例如zsh、dash等等...不過bash shell還是我們使用最多的。
第二行以#符號開始,表示本行是注釋,運行的時候是不會運行本行的。
第三行中的echo是linux中的輸出命令,該行的意思很明顯的就是輸出hello world!
運行第一個shell程序
新創建一個文件(hello_world.sh), 然后將以上代碼復制到此文件中,然后需要賦予此文件的可執行權限。
chmod +x hello_world.sh
最后執行:
./hello_world.sh
在linux中,后綴名幾乎是可以任意的或者沒有后綴名,一般將shell保存為xxx.shell是為了看起來更直觀。
如果直接執行hello_world.sh,這時會默認從$PATH環境變量中去尋找,這時,由於我們為將此文件配置在環境變量中,因此會找不到。所以,我們用了"."這個符號,表示從當前目錄找。
除了以上執行方法,我們還可以直接指定shell來運行:
/bin/sh hello_world.sh
這兒我們指定用了/bin/sh來執行,這時hello_world.sh中指定的/bin/bash將不會生效。
變量
編程豈能沒有變量?對吧?
shell編程中分為兩種變量,第一種是我們自己定義的變量(自定義變量),第二種是Linux已定義的環境變量(環境變量, 例如:$PATH, $HOME 等..., 這類變量我們可以直接使用)。
#!/bin/bash #使用環境變量 echo $PATH #自定義變量hello hello="hello world" echo $hello
以上演示了自定義變量和系統環境變量的用法,使用很簡單,就是使用$符號加上變量名就行了。記住:定義變量不用$符號,使用變量要加$就行了。
在第5行中,我們在自定義變量時,使用了雙引號,在shell編程中, 如果變量出現空格或者引號,那么也必須加引號, 否則就可以省略。
還有一點需要注意,定義變量的時候,“=”左右千萬不要有空格啊。
將linux命令執行結果賦值給變量
#!/bin/bash path=$(pwd) files=`ls -al` echo current path: $path echo files: $files
以上2行和第3行分別演示了兩種方式來將Linux命令執行結果保存到變量。
第2行將pwd執行結果(當前所在目錄)賦值給path變量。
第3行將ls -al命令執行結果(列出當前目錄下所有的文件及文件夾)賦值給變量
注意:第三行的符號不是單引號,是鍵盤上“~”這個按鍵
好啦,到此,對shell編程已經有初步認識了,也會使用變量了。到此,看起來shell編程是不是很的簡單。沒錯,其實真的就這么一回事。