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
內存大小:“”$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 23:23
下一篇 2017-08-06 11:05

相關推薦

  • Linux下常用的日志收集命令(Redhat&SuSe)

       Linux下日志的采集和分析是一個非常重要的工作,一般廠商在你需要技術支持的時候,都需要你通過對應指令收集系統的信息,我這邊列舉下常用的兩個Linux廠商的收集命令(Redhat Linux以及SuSe Linux),便于收集后,對系統進行全面分析。   sosreport是一個類型于supportconfig …

    系統運維 2016-07-07
  • grep、egrep、fgrep命令和正則表達式用法

    一、簡介  1.1、grep說明    grep命令簡單來說就是linux系統實現文本內容篩選過濾的命令。當我們需要快速定位查找文本(通常是配置文件)中我們需要的內容時,使用grep命令絕對算是最有效的處理方式之一。原因就在于grep可以配合包括“管道”、“正則表達式”等命令完成我們想要的關鍵字篩選過濾功能。個人認為不管是喜歡L…

    Linux干貨 2015-08-31
  • Linux文本處理工具及組管理

    1、列出當前系統上所有已經登錄的用戶名,注意:同一個用戶登錄多次,只顯示一次即可 [root@centos ~]# who | cut -d' ' -f1 | sort -u     gentoo &…

    Linux干貨 2016-10-09
  • 【26期】Linux第九周學習小總結

    本周帶來的是慢慢的技術分享,有關于計劃任務的分享,涉及的知識點主要是at和cron,crontab的詳解,計劃任務可以將任何腳本、程序或文檔安排在某個最方便的時間運行,有利于我們的自動化運維,當某項任務多次重復,或者某個指定的時間點多次執行時,就可以使用計劃任務方便我們的工作。

    2017-09-09
  • CMDB內功心法,助我登上運維之巔

    很多70、80后甚至90后都在金庸、古龍、梁羽生先生等武林大家熏陶下成長的,這么多年過去了,我的武俠夢依然不曾散去。曾幾何,夢想有一天練就一身絕學,摟著小師妹花前月下,仗劍走天涯,快意人生??擅看蔚暮ㄋ缐舳急话嘀魅未髸遄咏o抽醒,在他們的鞭策之下,渾渾噩噩的成了一位IT騷年。我們都知道武功分為內功和招式,內功是氣,而招式是形,以氣御形。內功深厚,會讓你的招…

    系統運維 2017-01-09
  • DHCP簡單闡述及配置實現方法

    DHCP是什么…… DHCP是Dynamic Host Configuration Protocol的縮寫,它是TCP/IP協議簇中的一種,主要是用來給網絡客戶機分配動態的IP地址。 其主要功能是: 用于內部網絡或網絡服務供應商自動分配IP地址給用戶 用于內部網絡管理員作為對所有電腦作中央管理的手段 直接點就是,這些被…

    Linux干貨 2016-12-05
欧美性久久久久