码迷,mamicode.com
首页 > 系统相关 > 详细

Shell脚本编程

时间:2016-08-11 23:04:20      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

Shell脚本编程

编程语言发展史:机器语言——>汇编语言——>高级语言

编程语言的分类:
(1)根据运行方式
 静态语言:编译型语言,事先转换成可执行格式 C、C++、JAVA、C#
  编译运行:源代码——>编译器 (编译)——>可执行程序文件

 动态语言:解释型语言,边解释边执行 shell、Python、、Perl、ASP、PHP
  解释运行:源代码——>运行时启动解释器,由解释器边解释边运行

(2)根据其编程过程中功能的实现是调用库还是调用外部程序文件来分
      shell脚本编程:利用系统上的命令及编程组件进行编程
      完整编程:利用库或编程组件进行编程

(3)编程模型:
      面向过程式:以指令为中心来组织代码,数据服务于指令
           适合开发小型程序,编程着眼立足于解决问题的过程本身 
                  代表:C、shell

      面向对象式:以数据为中心来组织代码,指令服务于数据
           适合开发大型程序,编程着眼于将项目抽象成对象并定义对象之间的动作
              代表:JAVA、Python、Perl、C++

shell脚本编程定义:1,面向过程式编程,依靠shell解释器解释执行
       2,命令堆砌后,按实际需求结合命令控制流程机制,实现编程效果

shell脚本的用途:
 1,自动化执行常用命令
 2,处理文本或文件
 3,执行系统管理和故障排除
 4,创建简单的应用程序

编程逻辑处理方式:顺序执行、选择执行、循环执行

变量:命名的内存空间
数据存储方式:
 字符:
 数值:整型,浮点型
 
变量的作用:
 1、申明数据存储格式
 2、申明参与的运算
 3、申明表示的数据范围

变量类型:
强类型:定义变量时必须定义类型,参与运算必须符合要求
     使用前必须事先声明,甚至还要初始化
  如:java,python

弱类型:无须指定类型,默认均为字符型;参与运算会自动
  进行隐式类型转换,变量无须事先申明可直接调用
  如:bash 不支持浮点数

变量命名法则:
 1、不能使程序中的保留字:例如:if, for
 2、只能使用数字、字母及下划线,且不能以数字开头
 3、见名知义
 4、统一命名规则:驼峰命名法

bash变量类型:根据变量生效范围
 本地变量:生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效
 环境变量:生效范围为当前shell进程及其子进程
 局部变量:生效范围为当前shell进程中某代码片断(通常指函数)
 位置变量:$1, $2, ...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数
 特殊变量:$?, $0, $*, $@, $#

本地变量
变量赋值:var-name=value
 (1) 字符串:var-name=“root"
 (2) 变量引用:name="$USER"
 (3) 命令引用:var-name=`COMMAND`
      var-name=$(COMMAND)

变量引用:${var-name}, $var-name,花括号大多数情况下可以去掉
 "":弱引用,其中的变量引用会被替换为变量值
 ‘‘:强引用,其中的变量引用不会被替换为变量值,而保持原字符串

显示已定义的所有变量:set
撤销变量:unset var-name

环境变量
变量声明、赋值:
 export var-name=VALUE
 declare -x var-name=VALUE
变量引用:$var-name, ${var-name}
显示已定义环境变量:
 export、env、printenv
撤销:unset var-name
bash有许多内建的环境变量:PATH, SHELL, USRE,UID, HISTSIZE, HOME, PWD, OLDPWD, HISTFILE, PS1

只读和位置变量
只读变量:只能声明时定义,但不能修改和删除
  申明方式:
   readonly name
   declare -r name
   
位置变量:在脚本代码中调用通过命令行传递给脚本的参数
$1, $2, ...:对应第1个、第2等参数,shift [#]轮换1-#个变量
$?:上一条命令的执行状态返回值
$0: 命令本身
$*: 传递给脚本的所有参数,全部参数合为一个字符串
$@: 传递给脚本的所有参数,每个参数为独立字符串
$#: 传递给脚本的参数的个数
 $@ $* 只在被双引号包起来的时候才会有差异

创建shell脚本
第一步:使用文本编辑器来创建文本文件
 首行必须包括shell声明序列:#!
 格式要求:首行shebang机制
  #!/bin/bash
  #!/usr/bin/perl
  #!/usr/bin/python
 添加注释:注释以#开头

#!/bin/bash
 
#Author:lovefirewall
#Version:1.0
#Create time:2008-08-08 08:08:08
 
#Description:Disk usage rate alarm

第二步:运行脚本
添加执行权限,在命令行上指定脚本的相对路径或绝对路径
无需添加执行权限,直接运行解释器,将脚本作为解释器程序的参数运行

本文出自 “爱情防火墙” 博客,请务必保留此出处http://183530300.blog.51cto.com/894387/1836991

Shell脚本编程

标签:

原文地址:http://183530300.blog.51cto.com/894387/1836991

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!