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
硬盘大小:“”$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

内存大小:1 GB

硬盘大小: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.178linux.com/84003

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

相关推荐

  • sed使用小结

    sed使用小结 Stream EDitor  行编辑器       sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”( pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,…

    Linux干货 2016-08-12
  • rpm和yum

     1、rpm的安装 rpm {-i|–install} [install-options] PACKAGE_FILE… -v: verbose -h: 以#显示程序包管理执行进度 rpm -ivh PACKAGE_FILE … [install-options] …

    Linux干货 2016-08-21
  • 马哥教育网络班22期+第九周课程练习

    1. 写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash#declare -a loginuserdeclare -i sum_login=0declare -i sum_nologin=0list=($(cat /et…

    Linux干货 2017-01-03
  • 硬盘分区MBR和GPT选哪个好?有什么区别?

    当前主流的硬盘分区方式有两种:MBR和GPT。 一、MBR与GPT简介与结构 什么是MBR?         MBR,全称为Master Boot Record,即硬盘的主引导记录。是对IBM兼容机的硬盘或者可移动磁盘分区时,在驱动器最前端的一段引导扇区。 MBR的组成部分       &…

    Linux干货 2016-08-29
  • sed编辑器使用

     简述       sed编辑器被称作流编辑器,和普通的交互式文本编辑器恰好相反。在交互式文本编辑器中(比如vim), 你可以用键盘命令来交互式地插入、删除或替换数据中的文本。流编辑器则会在编辑器处理数据之前基于预先 提供的一组规则来编辑数据流。sed编辑器可以根据命令来处理数据流中的数据,这些命令…

    2017-06-19
  • 磁盘管理:raid和lvm练习

    本文通过以下习题,巩固所学raid和lvm知识: 20160829         1、创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录       &nbsp…

    Linux干货 2016-09-05