RHCE試題EX300詳解(十九)建立一個指令碼

題目要求:建立一個指令碼

在 server0 上建立一個名為 /root/foo。sh 的指令碼,讓其提供下列特性:

l 當執行 /root/foo。sh redhat ,輸出為 fedora

l 當執行 /root/foo。sh fedora ,輸出為 redhat

l 當沒有任何引數或者引數不是 redhat 或者 fedora 時,其錯誤輸出產生以下的資訊: /root/foo。sh redhat|fedora

知識點小貼士:

Shell是一個命令直譯器,它的作用是解釋執行使用者輸入的命令及程式等。 使用者每輸入一條命令,Shell就執行一條。這種從鍵盤輸入命令,就可以立即得到迴應的對話方式,稱為互動的方式。

當命令或程式語句不在命令列下執行,而是透過一個程式檔案來執行時,該程式檔案就被稱為Shell指令碼。 在Shell腳本里內建了很多命令、語句及迴圈控制,然後將這些命令一次性執行完畢,這種透過檔案執行指令碼的方式稱為非互動的方式。 Shell指令碼語言很適合用於處理純文字型的資料,而Linux系統中幾乎所有的配置檔案、日誌檔案,以及絕大對數的啟動檔案都是純文字型別的檔案。

Shell指令碼語言是弱型別語言(無須定義變數的型別即可使用),在Unix/Linux中主要有兩大類shell:

一類是 Bourne shell ,另一類是 C shell

Bourne shell 包括 Bourne shell (sh)、Korn shell(ksh)、Bourne Again Shell 三種類型。

C shell包括csh、tcsh兩種型別

檢視系統預設的shell: echo $SHELL

檢視系統支援的shell: cat /etc/shells

解題步驟:

(1)編輯配置檔案:

[root@server0 ~]# vim /etc/bashrc/case

RHCE試題EX300詳解(十九)建立一個指令碼

(2)編輯指令碼:

[root@server0 ~]# vim /root/foo。sh

RHCE試題EX300詳解(十九)建立一個指令碼

註釋,指令碼內容如下:

#!/bin/bashcase $1 in  redhat)     echo fedora;;  fedora)     echo redhat;;  *)     echo ‘/root/foo。sh redhat|fedora’;;esac[root@server0 ~]# chmod a+x foo。sh

(3)測試驗證:

[root@server0 ~]# /root/foo。sh redhatfedora[root@server0 ~]# /root/foo。sh fedoraredhat[root@server0 ~]# /root/foo。sh/root/foo。sh redhat|fedora[root@server0 ~]# /root/foo。sh a/root/foo。sh redhat|fedora[root@server0 ~]#