UNIX 什么是 Shell 腳本

2018-08-12 22:12 更新

什么是 Shell 腳本

Shell 是用戶訪問 Unix 操縱系統(tǒng)的接口。它接收用戶的輸入,然后基于該輸入執(zhí)行程序。程序執(zhí)行完后,結(jié)果會顯示在顯示器上。

Shell 就是運(yùn)行指令、程序和 Shell 腳本的運(yùn)行環(huán)境。就和操作系統(tǒng)可以有很多種類一樣,Shell 也有很多種。每一種 Shell 都有其特定的指令和函數(shù)集。

Shell 提示符

提示符 $ 被稱為命令提示符。當(dāng)顯示命令提示符后,用戶就可以鍵入命令。

Shell 在用戶按 Enter 鍵后,從用戶輸入設(shè)備讀入輸入信息,它通過查看用戶輸入的第一個單詞,來獲知用戶想要執(zhí)行的命令。一個字即使字符不分割組成的字符串,一般是空格和制表符分割字。

下面是在顯示器上顯示當(dāng)前日期和時間的 date 指令的例子:

    $date
    Thu Jun 25 08:30:19 MST 2009

用戶也可以定制自己喜歡的命令提示符,方法是改變環(huán)境變量 PS1。

Shell 類型

Unix 系統(tǒng)中有兩種主要的 shell:

  • Bourne shell:如果用戶使用 bourne shell,默認(rèn)命令提示符是 $。
  • C shell:如果用戶使用 bourne shell,默認(rèn)命令提示符是 %。

Bourne shell 也有如下幾種子分類:

  • Bourne shell ( sh)
  • Korn shell ( ksh)
  • Bourne Again shell ( bash)
  • POSIX shell ( sh)

C shell不同的類型如下:

  • C shell ( csh)
  • TENEX/TOPS C shell ( tcsh)

最初的 UNIX Shell 是 Stephen R. Bourne 在 1970 年代中期寫的。當(dāng)時,他在新澤西的 AT&T 貝爾實(shí)驗(yàn)室工作。

Bourne shell是第一個出現(xiàn)在 Unix 系統(tǒng)中的 shell,因此它被稱為標(biāo)準(zhǔn)的“shell”。

Bourne shell通常是安裝在大多數(shù)版本的 Unix 中的 /bin/sh 目錄。由于這個原因,在不同版本的 Unix 上也會選擇這種 Shell 來編寫腳本。

在本教程中,我們將覆蓋 Bourne shell 中的大部分概念。

Shell 腳本

Shell 腳本的主要形式就是一系列的命令,這些命令會順序執(zhí)行。良好風(fēng)格的 Shell 會有相應(yīng)的注釋。

Shell 腳本有條件語句(A 大于 B)、循環(huán)語句、讀取文件和存儲數(shù)據(jù)、讀取變量且存儲數(shù)據(jù),當(dāng)然,Shell 腳本也包括函數(shù)。

Shell 腳本和函數(shù)都是翻譯型語言,所以他們并不會被編譯。

在后面的部分,我們會嘗試寫一些腳本。他們是一些寫有命令的簡單文本文件。

腳本例子

假設(shè)我們創(chuàng)建一個名為 test.sh 的腳本。注意所有腳本的后綴名都必須為 .sh。假設(shè)之前,用戶已經(jīng)往里面添加了一些命令,下面就是要啟動這個腳本。例子如下:

    #!/bin/sh

這個命令告訴系統(tǒng),后面的是 bourne shell它應(yīng)念成 shebang,因?yàn)?# 被稱為 hash,!稱為 bang

為了創(chuàng)建包含這些指令的腳本,用戶需要先鍵入 shebang 行,然后鍵入指令:

    #!/bin/bash
    pwd
    ls

Shell 注釋

可以像下面一樣來為腳本添加注釋:

    #!/bin/bash

    # Author : Zara Ali
    # Copyright (c) Tutorialspoint.com
    # Script follows here:
    pwd
    ls

現(xiàn)在用戶已經(jīng)保存了上述內(nèi)容,然后就可以執(zhí)行了:

    $chmod +x test.sh

執(zhí)行腳本方式如下:

    $./test.sh

這會輸出如下結(jié)果:

    /home/amrood
    index.htm  unix-basic_utilities.htm  unix-directories.htm  
    test.shunix-communication.htmunix-environment.htm

注意:如果想要執(zhí)行當(dāng)前目錄下的腳本,需要使用如下方式 ./program_name

擴(kuò)展的 Shell 腳本:

Shell 腳本有幾個構(gòu)造告訴 Shell 環(huán)境做什么和什么時候去做。當(dāng)然,大多數(shù)腳本比上面復(fù)雜得多。

畢竟,Shell 是一種真正的編程語言,它可以有變量,控制結(jié)構(gòu)等等。無論多么復(fù)雜的腳本,它仍然只是一個順序執(zhí)行的命令列表。

以下腳本使用 read 命令從鍵盤輸入并分配給變量 PERSON,最后打印 STDOUT。

    #!/bin/sh

    # Author : Zara Ali
    # Copyright (c) Tutorialspoint.com
    # Script follows here:

    echo "What is your name?"
    read PERSON
    echo "Hello, $PERSON"

下面是運(yùn)行該腳本的例子:

    $./test.sh
    What is your name?
    Zara Ali
    Hello, Zara Ali
    $
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號