Shell脚本编程基础

1编程基础

程序:指令+数据

程序编程分格:

过程式:以指令为中心,数据服务于指令

对象式:以数据为中心,指令服务于数据

Shell程序:提供了编程能力,解释执行

程序的执行方式

计算机:运行二进制指令

编程语言:

低级:汇编

高级:编译:高级语言->编译器->目标代码

编译性语言编写的程序通常是需要通过编译器去转换成计算机可以识别的二进制文件,并且是一个独立的文件,然后再去运行,像 java,C#等

解释:高级语言->解释器->机器代码

像shell这种就是解释性语言,它可以把编写好的文本直接拿来运行,在运行时,后台的shell编译器会临时的将文本文件解释成机器代码,不会生成独立二进制文件,它是放在内存中的 还有像Perl,Python也是解释性语言

编程基本概念

编程逻辑处理方式:

顺序执行 多个命令顺序执行

循环执行 为了满足某种条件我们需要命令的循环执行像创建多个账号,复制或打印多个文件等

选择执行 满足各种不同的条件去执行不同的命令

Shell编程:过程式,解释执行

编程语言的基本结构:

各种系统命令的组合

数据存储:变量,数组

表达式:a+b

语句:if

 

2, Shell脚本基础

Shell脚本:

包含一些命令或申明,并符合一定的文本文件

格式要求:首行shebang机制

#!/bin/bash

#!/user/bin/Python

#!/user/bin/Perl

Shell脚本的用途有:

自动化常用命令

执行系统管理和故障排除

创建简单的应用程序

处理文本或文件

创建shell脚本

第一步:使用文本编辑器来创建文本文件

第一行必须包括shell声明序列:#

#!/bin/bash

添加注释

注释以#开头

第二步:运行脚本

给予执行权限,在命令上指定脚本的绝对火相对路径

直接运行解释器,将脚本作为解释器的程序的参数运行

脚本规范

脚本代码开头约定

1 第一行一般为调用使用的语言

2 程序名,避免更改文件名而无法找到正确的文件

3 版本号

4更改后的时间

5作者相关信息

6 改程序的作用,及注意事项

7 最后是各版本的更新简要说明

脚本的基本结构

#!SHEBANG

CONFIGUrATION_VARIABLES  变量

FUNCTION_DEFINITIONS      函数

MAIN_CODE                 其它指令

脚本调试

检测脚本中的语法错误

bash -n

图片1

调试执行

bash -x

 

图片2

 

3 变量

变量:命名的内存空间

 

数据存储方式:

字符:

数值:整型,浮点数

变量:变量类型

作用:1 数据存储格式

2 参与的运算

3 表示的数据范围

类型:字符

数值:整型,浮点数

 

强类型:变量不经过强制转换,它永远是这个数据类型,许隐式的类型转换,一般定义变量时必须指定类型,参与必须符合类型要求;调用为声明变量会产生错误

如 java, c#

弱类型:语言的运行时会隐式做数据类型转换,无需指定,默认均为字符型;参与运算会自动进行隐式类型转换;无需事先定义可直接调用

如:bash 不支持浮点数,php

变量命名法则:

1 不能使用程序中的关键字

2 只能使用数字,字母及下划线,且不能以数字开头

3 见名知义

4 统一命名规则:驼峰法

局部变量

变量赋值:name=’value’  变量的值建议用引号 以防值之间有空格被误认为命令而报错

可以使用引用value

1可以是直接字符串:name=“root”

2变量引用:name=“$USER”

3命令引用:name=`command` name=$(command)

变量引用:${name}  $name

“” :弱引用,其中的变量引用会被替换为变量值

‘ ’:强引用,其中的变量引用不会被替换为变量值,而保持原字符串

显示已定义的所有变量:set

删除变量:unset name 建议不用的变量及时删除,使之释放空间

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89012

(0)
liuyongweiliuyongwei
上一篇 2017-11-27 12:38
下一篇 2017-11-27 13:37

相关推荐

  • 详解LAMP源码编译安装

    详解LAMP源码编译安装 LAMP简介 LAMP是当下非常流行的一套Web架构,我们可以在GNU/Linux下通过其他人打包的程序包来进行安装; 但是在生产环境中,很多时候都需要我们自己定制安装AMP,编译安装LAMP有以下几个优点 根据生产环境灵活定制程序 优化编译参数,提高性能 解决不必要的软件依赖 一、准备工作 卸载yum或rpm安…

    Linux干货 2016-10-16
  • Linux文件查找命令

      Linux系统文件查找     使用linux系统难免会忘记文件所在的位置,可以使用以下命令对系统中的文件进行搜索。 locate命令:     locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。L…

    Linux干货 2016-11-28
  • MySQL高可用架构之MHA

    MySQL高可用架构之MHA 1、关于MHA MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover功能。MHA在监控到master节点故障时,会提升其中拥有的最新数据的slave节点成为新的master节点,在此期间,MHA会通过其它从节点获取额外信息来避免一致性…

    Linux干货 2017-03-30
  • Nginx 编译安装

    简介 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配…

    Linux干货 2016-12-01
  • 一起学DNS系列(十四)DNS查询工具之DIG的使用(2)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/240243    上节谈到了利用DIG的+trace参数追踪域名解析的过程,其实除此之外,DIG还有一些其他的参数,这节会涉及到这…

    2015-03-17
  • vim编辑器作业

    1、复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符 [root@wzc tmp]# vim profile    # By default, we want umask to …

    Linux干货 2016-08-12