LINUX 簡單Shell指令碼的設計

2021-09-24 02:53:27 字數 4439 閱讀 1686

問題

本案例要求編寫三個指令碼程式,分別實現以下目標:

1)在螢幕上輸出一段文字「hello world」

2)能夠為本機快速配好yum倉庫

3)能夠為本機快速裝配好vsftpd服務

方案當指令碼的**量較大,或者指令碼需要傳遞給其他合作者使用時,規範的指令碼可以顯著降低**維護的難度(可能幾個月以後需要更改功能)、提高**的易讀性(小夥伴不會頻繁的來問你「這個變數用來幹嗎的」之類的問題)。

注意:在學習shell指令碼的過程中,如果**量比較少,通常就省略注釋了。

乙個規範的shell指令碼構成包括:

指令碼宣告(需要的直譯器、作者資訊等)

注釋資訊(步驟、思路、用途、變數含義等)

可執行語句(操作**)

shell指令碼的執行方式:

方法一,作為「命令字」:指定指令碼檔案的路徑,前提是有 x 許可權

方法二,作為「引數」:使用sh、source或者點號 . 來載入指令碼檔案

步驟實現此案例需要按照如下步驟進行。

步驟一:編寫第乙個shell指令碼,輸出「hello world」

1)手動測試指令碼功能的實現

要輸出一段話,可以使用echo命令,將指定的字串放在單引號內即可:

[root@svr5 ~]# echo 'hello world'  

hello world

2)根據手動任務操作編寫指令碼檔案

[root@svr5 ~]# vim  /root/first.sh  

#!/bin/bash

echo 'hello world'

[root@svr5 ~]# chmod +x /root/first.sh //新增可執行許可權

3)執行指令碼,測試效果

[root@svr5 ~]# /root/first.sh 

hello world

步驟二:編寫為本機快速配yum倉庫的shell指令碼

1)手動測試指令碼功能的實現

為rhel客戶機配置yum時,需要進入/etc/yum.repos.d/目錄下建立指定的倉庫配置檔案;另外,還要注意排除其他倉庫配置的干擾。從無到有的任務實現過程,整理後的操作大致如下(以光碟觸發掛載點/misc/cd作yum庫為例)。

首先,清理現有的yum倉庫配置檔案:

[root@svr5 ~]# rm -rf /etc/yum.repos.d/*.repo

[root@svr5 ~]# ls /etc/yum.repos.d/* //確認清理結果

ls: 無法訪問/etc/yum.repos.d/*: 沒有那個檔案或目錄

然後,建立新的yum倉庫配置檔案:

[root@svr5 ~]# vim /etc/yum.repos.d/rhel6.repo 

[rhel6]

name=red hat enterprise linux 6

baseurl=file:///misc/cd

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/rpm-gpg-key-redhat-release

2)根據手動任務操作編寫指令碼檔案

通過vim編輯器建立rhel6.repo的操作需要使用者互動鍵入內容,不方便在shell指令碼中使用。但是因為yum配置內容是固定的,因此可以採用echo顯示配置再重定向到倉庫檔案的方式,配置內容放在單引號內、正常換行即可。

編寫的指令碼內容參考如下:

[root@svr5 ~]# vim  /root/el6repo.sh

#!/bin/bash

rm -rf /etc/yum.repos.d/*.repo

echo '[rhel-packages]

name=red hat enterprise linux 6

baseurl=file:///misc/cd

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/rpm-gpg-key-redhat-release

' > /etc/yum.repos.d/rhel6.repo

[root@svr5 ~]# chmod +x /root/el6repo.sh //新增可執行許可權

3)執行指令碼,測試效果

為了方便檢查效果,先清理/etc/yum.repos.d/目錄:

[root@svr5 ~]# rm -rf /etc/yum.repos.d/*

[root@svr5 ~]# ls /etc/yum.repos.d/* //確認清理結果

ls: 無法訪問/etc/yum.repos.d/*: 沒有那個檔案或目錄

執行配置yum倉庫的指令碼:

[root@svr5 ~]# /root/el6repo.sh 

[root@svr5 ~]#

檢查配置結果:

[root@svr5 ~]# ls /etc/yum.repos.d/*  						//倉庫配置已建立

/etc/yum.repos.d/rhel6.repo

[root@svr5 ~]# yum repolist //yum倉庫已可用

rhel-packages | 3.9 kb 00:00 ...

rhel-packages/primary_db | 3.1 mb 00:00 ...

repo id repo name status

rhel-packages red hat enterprise linux 6 3,690

repolist: 3,690

步驟三:編寫快速裝配vsftpd服務的shell指令碼

1)手動測試指令碼功能的實現

根據在linux網路服務部分學過的知識,裝配vsftpd服務包括以下過程。

首先,確保安裝vsftpd軟體包(執行yum安裝即可):

root@svr5 ~]# yum -y install vsftpd   					//不管是否已安裝

.. ..

然後,確保啟動vsftpd服務:

[root@svr5 ~]# service vsftpd restart  				//不管是否已啟動

.. ..

最後,可設定vsftpd開機後能夠自動執行:

[root@svr5 ~]# chkconfig vsftpd on  					//不管是否已設定
[root@svr5 ~]# vim  /root/ftpon.sh

#!/bin/bash

yum -y install vsftpd &> /dev/null

service vsftpd restart

chkconfig vsftpd on

[root@svr5 ~]# chmod +x /root/ftpon.sh //新增可執行許可權

3)執行指令碼,測試效果

為了方便檢查效果,先移除vsftpd軟體包:

[root@svr5 ~]# yum -y remove vsftpd

.. ..

[root@svr5 ~]# rpm -q vsftpd //確認已解除安裝

package vsftpd is not installed

執行快速裝配vsftpd服務的指令碼:

[root@svr5 ~]# /root/ftpon.sh 

關閉 vsftpd: [失敗]

為 vsftpd 啟動 vsftpd: [確定]

確認指令碼執行結果:

[root@svr5 ~]# rpm -q vsftpd

vsftpd-2.2.2-11.el6_4.1.x86_64

[root@svr5 ~]# service vsftpd status

vsftpd (pid 45694) 正在執行...

[root@svr5 ~]# chkconfig --list vsftpd

vsftpd 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉

linux 簡單shell指令碼編寫

前幾天學習了一些shell指令碼編寫,今天把它記下來。下面的指令碼是修改電腦的ip位址 子網掩碼 閘道器。bin bash 這句話是指定指令碼的直譯器是bash read p please input ipaddr ip read p這個語句就是通過鍵盤讓自己輸入要輸入的內容 read p plea...

簡單的shell指令碼

bin bash set x count 1 port 10125 ip 125 pre 100 dir pwd destination home while count le 3 dodir expr pre count reip ip report port mkdir dir sed e s ...

Linux的shell指令碼

shell 程式設計一般指 shell 指令碼程式設計。語法 使用 vi 編輯器新建乙個檔案 hello.sh bin bash echo hello world 執行 方式1 sh hello.sh 方式2 chmod x hello.sh 使指令碼具有執行許可權 hello.sh 執行指令碼 4...