shell簡單腳本

Shell小腳本

 

 

一.       一. 簡介

從程序員的角度來看, Shell本身是一種用C語言編寫的程序,從用戶的角度來看,Shell是用戶與Linux操作系統溝通的橋梁。用戶既可以輸入命令執行,又可以利用 Shell腳本編程,完成更加復雜的操作。在Linux GUI日益完善的今天,在系統管理等領域,Shell編程仍然起著不可忽視的作用。深入地了解和熟練地掌握Shell編程,是每一個Linux用戶的必修 功課之一。

LinuxShell種類眾多,常見的有:Bourne Shell/usr/bin/sh/bin/sh)、Bourne Again Shell/bin/bash)、C Shell/usr/bin/csh)、K Shell/usr/bin/ksh)、Shell for Root/sbin/sh),等等。不同的Shell語言的語法有所不同,所以不能交換使用。每種Shell都有其特色之處,基本上,掌握其中任何一種 就足夠了。在本文中,我們關注的重點是Bash,也就是Bourne Again Shell,由于易用和免費,Bash在日常工作中被廣泛使用;同時,Bash也是大多數Linux系統默認的Shell。在一般情況下,人們并不區分 Bourne ShellBourne Again Shell,所以,在下面的文字中,我們可以看到#!/bin/sh,它同樣也可以改為#!/bin/bash。

利用vi等文本編輯器編寫Shell腳本的格式是固定的,如下:

#!/bin/sh

#comments

Your commands go here

首行中的符號#!告訴系統其后路徑所指定的程序即是解釋此腳本文件的Shell 序。如果首行沒有這句話,在執行腳本文件的時候,將會出現錯誤。后續的部分就是主程序,Shell腳本像高級語言一樣,也有變量賦值,也有控制語句。除第 一行外,以#開頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上,這個符號表明下一行與此行會合并為同一行。

編輯完畢,將腳本存盤為filename.sh,文件名后綴sh表明這是一個Bash腳本文件。執行腳本的時候,要先將腳本文件的屬性改為可執行的:

chmod +x filename.sh

執行腳本的方法是:

./filename.sh

####################################

下面我們從經典的“hello world”入手,看一看最簡單的Shell腳本的模樣。

#!/bin/sh

#print hello world in the console
window

a = “hello world”

echo $a

二.Shell中的變量

  變量:命名的內存空間

數據存儲方式:

字符:

數值:整型,浮點型

變量:變量類型

作用:

1 、數據存儲格式

2 、參與的運算

3 、表示的數據范圍

類型:

字符

數值:整型、浮點型

  強類型 :變量 不經過強制轉換,它永遠是這個數據類型,不

允許隱式的類型 轉換。一般定義變量時必須指定類型、參與

運算必須符合類型要求;調用未聲明變量會產生錯誤

java,c#

弱類型:語言的運行時會隱式做數據類型 轉換。無須指定類

型,默認均為字符型;參與運算會自動進行隱式類型轉換;

變量無須事先定義可直接調用

如:bash  不支持浮點數,php

變量命名法則:

1 、不能使程序中的保留字:例如if, for

2 、只能使用數字、字母及下劃線,且不能以數字開頭

3 、見名知

4      、統一命名

三.Shell腳本的基本練習

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

#bin/bash?

ipv4=`ifconfig
ens33 |grep “\<inet\>”|tr -s ‘ ‘|cut -d ‘ ‘ -f3`

banben=`cat
/etc/redhat-release;uname -r`

CPU=`lscpu|grep
“Model name”|cut -d : -f 2|tr -s ‘ ‘`

Ferr=$[$(cat
/proc/meminfo |head -1|grep -o “[[:digit:]]\+”)/1024/1024]

Fdisk=`fdisk
-l|head -n 2|tail -n 1|cut -d ‘ ‘ -f3,4`

echo
系統基本信息

echo
“name
“$(hostname)

echo
“IPV4
地址:“”$ipv4”

echo
版本信息和內核:“$banben

echo
“CPU
型號:“”$CPU”

echo
內存大?。?/span>“”$Ferr
GB”

echo
硬盤大?。?/span>“”$Fdisk”

輸出結果

[root@localhost app]# bash sys

系統基本信息

namelocalhost.localdomain

IPV4地址:172.17.252.64

版本信息和內核:CentOS
Linux release 7.3.1611 (Core) 3.10.0-514.el7.x86_64

CPU型號: Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz

內存大?。?span>1 GB

硬盤大?。?span>214.7
GB,

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

#!/bin/bash

Echo start backup

Sleep 3

cp -a /etc /root/etc$(date +%F)

echo work is over

輸出結果

[root@localhost app]# bash backup.sh

start backup

work is
over”

[root@localhost app]# ^C

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

[root@localhost app]# vim disk.sh

#!/bin/bash

輸出結果

echo “硬盤利用率最大的值:$(df |grep -o “\<[[:digit:]]\{1,3\}%” |sort -n |tail -n
1)”

[root@localhost app]# bash disk.sh

硬盤利用率最大的值:31%

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

#!/bin/bash

netstat -tun | grep “[0-9]” | tr -s ‘ ‘ : |cut -d:
-f6|sort|uniq -c|sort –rn

輸出結果

[root@localhost app]# bash links.sh

      3 172.17.250.182

[root@localhost app]#

 

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

(0)
TouchTouch
上一篇 2017-08-05
下一篇 2017-08-06

相關推薦

  • 優云攜手網易云 助力企業“互聯網+”轉型

    12月16日,網易旗下“網易云”首屆“網易云聚,共創未來”合作伙伴大會在網易杭州園區舉行,優云(uyun.cn)成為首批授牌20家企業之一,并作為核心合作伙伴代表現場簽署了合作伙伴協議。 右二為優云軟件運營經理 柴勇 現場簽署合作伙伴協議 會上,網易杭州研究院執行院長汪源介紹了網易云的戰略生態全境,提出“產品體系+培訓體系+服務體系”的網易云三大核心競爭力,…

    Linux資訊 2017-03-15
  • Linux基礎——文件管理

    Linux基礎——文件管理 文件管理及常用命令詳解       Linux文件系統是以/為基本的倒置樹狀結構,我們來進一步學習下文件或者目錄的操作和管理命令:  目錄相關操作:cd、pwd、mkdir、rmdir 目錄及文件檢索:ls 復制、移動、刪除:cp、mv、rm…

    Linux干貨 2016-09-27
  • CentOS計劃任務詳解

    一、計劃任務應用場景:        需要每天對服務器上的數據進行備份,但是白天服務器的訪問量較大,服務器承受著較大的壓力,備份任務只能在夜晚服務器較空閑時才能進行?;蛘咝枰R時在某時間點執行一個任務等,都需要用到計劃任務的功能。 二、計劃任務分類:    &…

    Linux干貨 2016-09-09
  • 學習宣言

    世界上只有一種失敗,就是半途而廢!

    Linux干貨 2016-12-29
  • 運維工程師技能需求排行

    這是我今天在拉勾網搜索運維,翻完了4四頁也招聘信息之后得到的,我的目的是想要看看之后的學習,哪個更應該成為重點,有些在我意料之中,有些還真的沒想到,算是努力了一個小時的收獲吧,分享給大家。
    注意:其中的看法僅代表個人觀點,很多都是依靠我自己的學習經驗和工作經驗累積的

    Linux干貨 2017-12-12
  • 用戶組和權限管理的相關命令

    1,useradd  新建用戶 useradd -u uid username 創建用戶時指定uid(如不指定則Centos:500-60000, Centos7: 1000-60000) -o -u uid username  創建用戶時指定uid(可以與已存在用戶的uid相同) -g groupname username 創…

    2017-07-25
欧美性久久久久