歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux Shell腳本入門學習系列

Linux Shell腳本入門學習系列

日期:2017/2/28 13:53:03   编辑:SHELL編程

看標題大家應該知道,這是一個關於 Linux Shell 腳本的系列文章。通過本系列文章希望幫助 Linux 初學用戶快速開始上手編寫 Shell 腳本,能夠利索的對腳本進行測試和使用。

在接下來的首篇文章中,我們將介紹什麼是 Shell,有哪些 Linux Shell 類型,什麼是 Shell 腳本以及如何編開始寫自己的 Shell 腳本等內容。

什麼是(Unix) Shell

Unix Shell 即大家俗稱的 Shell 是源於 Unix/Linux 的命令行解釋器,用戶在 Shell 中執行的一系列命令都會被 Shell 命令行解釋器直接執行。現代流行的命令行解釋功能都已被內置到 Linux Shell 中進行支持,例如:通配符、 管道、 變量、條件操作、 命令及幫助文件等。簡單來說,我們可以把 Linux 理解為用戶與 Linux 操作系統進行交互的一個接口。

常見Shell類型

Linux 中的各種 Shell 類型有很多,但 Bourne Shell 和 C shell 應用最為廣泛,事實上 Bourne Shell 已經成為 Shell 附加功能及一些衍生功能的編碼基礎。

  • Bourne Shell:Bourne shell 又名 sh,在 Linux 中的標准路徑為 /bin/sh,它由 Stephen Bourne 編寫創建,其之所以如此出名是因為 sh 作為其它 Shell 的大量符號/硬鏈接而存在。(Bourne Shell 的 License 仍在討論中。)
  • C Shell:C Shell 又名 csh,由 Billy Joy 編寫創建並被 BSD Unix 廣泛使用。C Shell 引入許多功能來完善交互,如:別名,歷史操作,任務控制等。它完全由 C 語言寫成,並使用 BSD license。
  • Fish:Fish 是友好人機交互的代表,它改變了用戶與 Linux Shell 在通用變量、友好錯誤信息、Tab 補全、語法高亮、智能終端和剪貼板處理等方面的交互方式。(Fish 基於 GPL v2)
  • Bourne-Again Shell:作為 GNU 項目的一部分,Bourne-Again Shell 是目前大多數 Linux 發行版和 Mac OS X 默認使用的 Shell。(它主要由 C 語言寫成並基於 GPLv3 發布)

其它不太常用的 Linux Shell 還包括:

  • Debian Almquist shell 別名 dash
  • Korn Shell 別名 ksh
  • Z shell 別名 zh
  • Busybox
  • ……

什麼是Shell腳本

Shell 腳本主要由 Linux Shell 解釋執行,可被用於自動化的程序執行、文件操作、環境配置等任務,Linux 管理員通常使用 Shell 腳本來執行一些重復性的體力勞動。

Shell 腳本可將多個要執行的命令和任務提交到 Linux Shell 自動執行,而無需用戶手動觸發。你還可以在單個腳本中將一個命令的輸出定義為另一個命令的輸入。

總的來說,Shell 腳本編寫是 Linux 管理員節省時間和資源的必備技能。

如何編寫Shell腳本

在新手階段,我們比較建議大家使用 gedit、vi/vim、nano 或 Emacs 來編寫 Shell 腳本,而不要使用其它 IDE 編輯器。Bash 腳本必需以如下代碼作為首行:

#!/bin/bash

上述字符中的 #! 被稱為 shebang,後面跟的 /bin/bash 表明要使用 /bin/bash 來執行。除首行(意義特殊)用於指定腳本類型外,其余以 # 打頭的內容會被當作注釋被 Shell 忽略執行。

腳本寫成後,你可將該文件保存成任意擴展名甚至無擴展名,但業界公認慣例以 .sh 作為 Linux Shell 腳本的擴展名,建議大家也別搞特殊。而且要在賦予腳本執行權限之後才能被執行,建議大家采用 775 權限,千萬不要 777:

chmod 755 linuxidc.sh

編寫首個Shell腳本

打開你使用的文本編輯器,粘貼如下內容:

#!/bin/bash
echo "Hello World!"

將其保存成 linuxidc.sh 再執行看看效果:

linuxidc@linuxidc:~$ cd 桌面
linuxidc@linuxidc:~/桌面$ chmod 755 linuxidc.sh
linuxidc@linuxidc:~/桌面$ ./linuxidc.sh
Hello World!

執行成功了,是不是非常簡單。

下面我們再建立一個 linuxidc.sh 並粘入如下內容:

  1. #!/bin/bash
  2. echo "What is your name?"
  3. read a;
  4. echo "Hey $a! what is your Favorite Website?"
  5. read b;
  6. echo -e "That's Nice to know @$a that $b is your favorite Website"

大家看看執行之後發生了什麼呢?

linuxidc@linuxidc:~/桌面$ ./linuxidc.sh
What is your name?
linuxidc.com
Hey linuxidc.com! what is your Favorite Website?
www.linuxidc.com
That's Nice to know @linuxidc.com that www.linuxidc.com is your favorite Website

  1. echo 後的「What is your name?」進行了正確輸出,隨後你輸入的名字被存到了變量 a 當中,讓命令可以從文件描述符中進行讀取。
  2. echo 後跟的 「Hey $a! what is your Favorite Website?」中的 $a 變量進行了賦值輸出,並將輸入的網址存入了變量 b,在第三行進行輸出。

如此簡單!開始上手的感覺非常良好?在 Linux Shell 腳本系列的後續文章中,我們將逐步深入,希望大家玩得開心。

Copyright © Linux教程網 All Rights Reserved