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 23:23
下一篇 2017-08-06 11:05

相关推荐

  • 马哥教育N22期第六周作业

    关于vim编辑器使用方法整理 编辑器分为文本编辑器、全屏编辑器、模式化编辑器 vim是最常用的编辑器之一,是vi的增强版 基本模式分为编辑模式、命令模式、输入模式、末行模式 下面我们介绍一下vim编辑器常用方法: 打开文件 vim +#:打开文件后,直接光标处于第#行行首 +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配 +…

    Linux干货 2016-10-09
  • 网络25期学习宣言

    马哥Linux运维学院 学习宣言 亲爱的小伙伴:        欢迎大家报名马哥Linux运维网络学习班,跟随马哥学习Linux技术,成就Linux大牛之梦。在这里,我们不仅可以学习到最优秀的技术课程,还可以跟着追梦的小伙伴们一起学习、一起进步。 为了督促大家一直积极认真努力的学习,请各位同学在评论区写出你的学习宣言。…

    Linux干货 2016-11-14
  • Linux系统操作入门(命令格式|命令帮助|基础命令)

    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定

    2018-03-06
  • Python之入门篇

    一、环境准备 环境准备 –> pyenv (安装python解释器,管理Python版本,管理python虚拟环境) https://github.com/pyenv/pyenv https://github.com/yyuu/pyenv-installer # yum -y install git # curl -L https://ra…

    Linux干货 2017-02-05
  • 运维工程师技能需求排行

    这是我今天在拉勾网搜索运维,翻完了4四页也招聘信息之后得到的,我的目的是想要看看之后的学习,哪个更应该成为重点,有些在我意料之中,有些还真的没想到,算是努力了一个小时的收获吧,分享给大家。
    注意:其中的看法仅代表个人观点,很多都是依靠我自己的学习经验和工作经验累积的

    Linux干货 2017-12-12
  • 使用sudo对用户进行权限管理

    使用sudo对用户进行权限管理 因为root用户权限太大,一般在实际应用的时候 ,为了避免造成错误泛滥和找不到责任人都需要对使用服务器人员进行权限分配,除了系统管理员外,其他人禁止使用root,但可以通过sudo命令,给自己提权。同时通过日志审计进行监控操作,操作如下: 1.禁止普通用户使用su命令到root # usermod -g wheel user0…

    Linux干货 2017-03-26