基礎腳本編程練習題

    Shell腳本其實就是以一系列命令組合起來的文本文件,這些命令組合起來完成一個或者一項功能。因為Shell似乎是各UNIX系統之間通用的功能,并且經過POSIX表示可移植操作系統接口Portable Operating System Interface of UNIX,縮寫為 POSIX的標準化。因此,Shell腳本只要“用心寫”一次,即可應用到很多系統上。因此,之所以要使用Shell腳本不僅僅是基于:它的簡單性簡潔地表達復雜的操作)和可移植性(腳本無須修改就可在不同的系統上執行),和它相對開發容易可以在短時間內完成一個功能強大又妤用的腳本)也離不開。它的示例一般長下面這樣:

基礎腳本編程練習題

下面小編通過一些練習題來向你們講述shell的美基礎腳本編程練習題

1、編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPv4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。

基礎腳本編程練習題

 小編解析*:

 第8行:題目只要IPv4地址,所以使用ifconfig ens33,然后grep命令過濾出包含inet的那一行,最后tr命令把里面的空格轉變成一個就可以切出你想要的那一串數字啦

 第9行:小編覺得這一行大家應該都知道,就是顯示版本號和內核信息的,記住這倆命令即可,其他的就不多說了。

 第10行:與第8行相似,都是查詢過濾再進行切除。

 第11行:我們看到兩個$符對不對,中括號里面的$符是用來引用小括號里面的那些查看過濾取行首等命令執行的結果,中括號外面的$符是用來計算的,看到/符沒,/1024就是 除以1024。(小編這里說的是不是有點繞基礎腳本編程練習題

 第12行:相似與第8、10行,小編就不絮叨了。

結果顯示:

基礎腳本編程練習題

2、編寫腳本/root/bin/backup.sh,可實現將/etc/目錄備份到/root/etcYYYY-mm-dd中。

基礎腳本編程練習題

結果顯示:

基礎腳本編程練習題

3、編寫腳本/root/bin/disk.sh,顯示當前硬盤分區中空間利用率最大的值。

基礎腳本編程練習題

結果顯示:

基礎腳本編程練習題

4、編寫腳本/root/bin/links.sh,顯示正連接本主機的每個遠程主機的IPv4地址和連接數,并按連接數從大到小排序。

基礎腳本編程練習題

結果顯示:

基礎腳本編程練習題

5、編寫腳本/root/bin/sumid.sh,計算/etc/passwd文件中的第10個用戶和第20用戶的ID之和。

基礎腳本編程練習題

  小編解析*:

5、6行:這兩行長得很像哈。首先我們看到反引號把所有內容都引起來了,它這里就是把里面的內容當做一個命令來執行。

7行:中括號里面的$符是分別引用第56行得出的user10user20的結果;外面的$是依題意要求計算他倆的和

8行:輸出計算之后的和

結果如下:

[root@localhost bin]# ./sumid.sh   

70

6、編寫腳本/root/bin/sumspace.sh,傳遞兩個文件路徑作為參數給腳本,計算這兩個文件中所有空白行之和。

基礎腳本編程練習題

  小編解析*:

5、6行:首先又是反引號,其作用如第5題,而grep后面加雙引號可以識別所輸入的變量;這道題所說的空白行就是由空格組成的行,也就是以空格開頭以空格結尾但是中間也是有內容的,內容就是這些space。^符就是以后面的space(空格)開頭,*號代表有很多空格,$符就是以前面的space結尾,$1,$2就是傳遞給腳本的參數,最后wc再進行行數統計。

 7、8行與第5題相似,也是計算并輸出結果。

結果顯示:

基礎腳本編程練習題

7、編寫腳本/root/bin/sumfile.sh,統計/etc, /var, /usr目錄中共有多少個一級子目錄和文件。

基礎腳本編程練習題

結果顯示:

[root@localhost bin]# ./sumfile.sh

304

8、編寫腳本/root/bin/argsnum.sh,接受一個文件路徑作為參數;如果參數個數小于1,則提示用戶“至少應該給一個參數”,并立即退出;如果參數個數不小于1,則顯示第一個參數所指向的文件中的空白行數

基礎腳本編程練習題

小編解析*:

5行中的$@表示傳遞給腳本的所有參數,如果傳遞的有參數,就會顯示&&后面的小括號里統計出來的行數;如果沒有傳遞參數,就會輸出||后面的小括號里的“至少應該給一個參數”這句話。

   方法二:

   [[ $# -lt 1 ]] && echo “至少應該給一個參數!” || echo “第一個文件中有 `grep ‘^[[:space:]]*$’ $1|wc -l`個空白行

   這里小編用中括號進行判斷傳遞給腳本參數的個數($#)是否小于(lt1,個數小于1就會顯示”至少應該給一個參數“這句話,不小于1就輸出||后面的統計結果。

結果顯示:

[root@localhost bin]# ./argsnum.sh                 

至少應該給一個參數

[root@localhost bin]# ./argsnum.sh /etc/login.defs

第一個文件中有 10個空白行

9、編寫腳本/root/bin/hostping.h,接受一個主機的IPv4地址做為參數,測試是否可連通。如果能ping通,則提示用戶“該IP地址可訪問”;如果不可ping通,則提示用戶“該IP地址不可訪問”

基礎腳本編程練習題

  小編解析*:

  這一題里,-c代表ping幾次,-w代表執行時間,小編這里是讓它ping1次然后用時1秒,不然ping起來沒完很費時間的啊。題目要求就是測試是否連通并沒說要結果,所以我們就可以把它ping的結果無論成功失敗都導入到垃圾桶(/dev/null)里面去,最后對應加上需要輸出的語言就可以了。

結果顯示:

基礎腳本編程練習題

10、編寫腳本/root/bin/checkdisk.sh,檢查磁盤分區空間和inode使用率,如果超過80%,就發廣播警告空間將滿。

基礎腳本編程練習題

小編解析*:

  第5、6行這里就是通過轉換排序等命令得出最大值

  第7、8行是判斷上面所得出的結果是否大于(gt80,大于就要發廣播(wall命令),小于就顯示正常。

結果顯示:

基礎腳本編程練習題

  第二種方法:

基礎腳本編程練習題

 這種方法就是把方法1的判斷那兩行使用||合并成了一行,你們那么聰明,小編不多說了啊。

小編總結:關于shell腳本這一章就要多練題、多敲!基礎腳本編程練習題



原創文章,作者:Qianzhihe,如若轉載,請注明出處:http://www.www58058.com/83878

(1)
QianzhiheQianzhihe
上一篇 2017-08-05
下一篇 2017-08-05

相關推薦

  • RAID級別介紹

    raid分為軟raid和硬raid,一般公司使用硬raid,數據無價。 存數據都是先存到內存,后同步到硬盤,為提高raid卡的性能會在raid嵌入內存顆粒。 但是問題是斷電后內存的數據沒有同步到硬盤會丟失,這樣就會有raid卡電池。(raid卡必須有raid電池) 計算機只識別raid卡,不會識別raid卡下有幾塊硬盤 raid 0:  (條帶式)…

    Linux干貨 2016-03-22
  • 管中窺豹—linux命令

    命令行選項風格: 1、原始unix風格     a、命令行選項以連字符'-'開頭,后跟單個字符表示選項,選項后面跟著取值,如:mysql -hlocalhost      b、選項不帶取值的,可以組合在一起,如:sed -n -r 可以寫成 sed -nr  …

    Linux干貨 2016-10-30
  • 網絡管理之基本概念

    本章內容     網絡概念     OSI模型     網絡設備     TCP/IP     IP 地址     配置…

    Linux干貨 2016-09-08
  • CentOS 7 tomcat 7.0.54 的功能實現及詳解

    一、 jdk 安裝配置 # yum install java-1.8.0-openjdk-devel (依賴的java-1.8.0-openjdk,java-1.8.0-openjdk,headless也會被安裝 ) # alternatives -h # vim /e…

    2016-08-19
  • 馬哥教育網絡班21期+第6周課程練習

    VIM基礎知識 常用模式: 編輯模式–>命令模式 輸入模式 末行模式:內置的命令行接口 模式轉換: 編輯模式–>輸入模式 i:在光標所在處前轉換為輸入模式; a:在光標所在后面轉入輸入模式; o:在當前光標所在行的下方打開一個新行,并轉為輸入模式; I:在當前光標所在行的行首輸入; A:在當前光標所在行的行尾輸入; O:在當前光標所在行的上方…

    Linux干貨 2016-08-15
  • 初識文件系統和軟硬鏈接

    什么是文件系統?         磁盤分區以后必須設置磁盤的文件系統才可以正式使用,文件系統定義了文件存儲的類型,也就是這個文件要按照怎樣的方式存入磁盤分區。         linux中文件系統的類…

    2017-07-20
欧美性久久久久