shell腳本編程基礎練習

這周,我們學習了shell腳本基礎,那么什么是shell腳本呢?

shell script是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在里面,然后用正則表達式,管道命令以及重定向向等功能,以達到我們所想要的處理目的。Shell腳本可以幫助我們系統、自動化的去管理和處理一些東西

下面是摘抄出的幾個練習:

首先,寫一個能夠創建新腳本的Shell script,如createshXX.sh, 當執行createsh /root/bin/test1.sh ,則會自動創建并打開/root/bin/test1.sh,且其中包含以下內容:

#!/bin/bash

# ——————————————

# Filename:

# Revision:

# Date:

# Author:

# Email:

# Website:

# Description:

# ——————————————

shell腳本編程基礎練習

注:$1 位置變量,指代后面輸入的第一個參數,使用echo和”>” 生成文件并導入模板內容,chmod +x給予文件可執行權限

下面的所有腳本都使用這個腳本創建,基本注釋就可以省略了。shell腳本編程基礎練習

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

 _space=`cat $@ | egrep “^[[:space:]]*$” |wc -l` ; echo $_space

注:這道練習沒有難點,不過上面的解答很有創意,所以收藏了。通過cat同時查看多個文件,然后grep直接匹配兩個文件的所有空白行,這樣就省去了運算過程 ,66的 。 

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

[   “$@”  ]&&(cat $1 |grep “^[[:space:]]*$” |wc -l) ||(echo 至少應該給一個文件參數!;exit)

注:$@: 傳遞給腳本的所有參數,每個參數為獨立字符串 ,()將多個命令組合起來作為一組執行。

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

A=`df | grep sd|sort -nr -k5|head -1|tr -s ‘ ‘ %|cut -d% -f5`

B=`df -i| grep sd|sort -nr -k5|head -1|tr -s ‘ ‘ %|cut -d% -f5`

[ “$A” -gt “80” ] && wall “空間即將滿”||echo “空間使用率不超過80%”

[ “$B” -gt “80” ] && wall “inode即將滿”||echo “inode使用率不超過80%”

unset A B

注:寫這個腳本的時候,我一直在糾結,因為不知道應該怎么把幾個數字依次與80%對比,原來只需要使用sort和head取最大的使用率和80%對比就行了,尷尬!shell腳本編程基礎練習

4.編寫腳本/bin/per.sh,判斷當前用戶對指定的參數文件,是否不可讀并且不可寫

shell腳本編程基礎練習

注:這個腳本一定要注意加入判斷文件是否存在,不然如果文件不存在,也會顯示為文件不可讀且不可寫。

5.編寫腳本/root/bin/excute.sh ,判斷參數文件是否為sh后綴的普通文件,如果是,添加所有人可執行權限,否則提示用戶非腳本文件

shell腳本編程基礎練習

注:[ =~ ]測試‘=~’前面的字符串能否被后面的字符串匹配,要注意以’.sh’結尾的表示方法,不知道你會不會錯,反正我錯了好多次。

shell腳本會在我們將來工作中經常使用到,一定要好好練習。






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

(0)
mayunmayun
上一篇 2017-08-05 15:47
下一篇 2017-08-05 16:11

相關推薦

  • bash

    1.  bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示           狀態返回值:            &nbsp…

    Linux干貨 2016-11-06
  • 網卡和路由的設置

    一:設置網卡別名: 首先,關閉NetworkManager服務 service NetworkManager stop 創建一個配置文件 ,文件名為網卡的文件名+“:num”如 : 網卡文件為:ifcfg-eth0 ,創建文件“ifcfg-eth0:1",冒號后跟的數字,可以隨意指定。 1,關閉NetworkManager服務   [ro…

    Linux干貨 2016-09-12
  • 文本處理學習小結

    抽取文本的工具 文件內容:less和cat 文件截?。篽ead和tail 按列抽?。篶ut 按關鍵字抽取:grep 文件查看 復制標準輸入到標準輸出 文件查看命令:cat, tac,rev cat命令: cat [OPTION]… [FILE]… -E: 顯示行結束符$ -n: 對顯示出的每一行進行編號 -A:顯示所有控制符 -b:非…

    Linux干貨 2016-08-07
  • 新手報到

    在開班的第一天為自己立下flag,看畢業時能否實現自己的預期。

    2018-03-26
  • 防火墻

    iptables筆記整理

    Linux干貨 2018-03-05
  • 一、循環語句:for, while, until 循環執行:將某代碼段重復運行多次重復運行多少次:循環次數事先已知循環次數事先未知有進入條件和退出條件 1.for……do……done for 變量 in 列表 ; do    循環體done 執行機制:依次將列表中的元素賦值給“變量名”; 每次賦值后即執行一次循環體; 直到列表中…

    Linux干貨 2016-08-19
欧美性久久久久