shell编程使用方法

    Shell概述

  Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令,并把它送入内核去执行。内核是Linux系统的心脏,从开机自检就驻留在计算机的内存中,直到计算机关闭为止,而用户的应用程序存储在计算机的硬盘上,仅当需要时才被调入内存。Shell是一种应用程序,当用户登录Linux系统时,Shell就会被调入内存去执行。Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。

  shell编程使用方法

  优势

  Shell脚本语言的好处是简单、易学、易用,适合处理文件和目录之类的对象,以简单的方式快速完成某些复杂的事情通常是创建脚本的重要原则,脚本语言的特性可以总结为以下几个方面:

  语法和结构通常比较简单。

  学习和使用通常比较简单,

  通常以容易修改程序的“解释”作为运行方式,而不需要“编译。

  程序的开发产能优于运行效能。

  Shell脚本语言是Linux/Unix系统上一种重要的脚本语言,在Linux/Unix领域应用极为广泛,熟练掌握Shell脚本语言是一个优秀的Linux/Unix开发者和系统管理员必经之路。利用Shell脚本语言可以简洁地实现复杂的操作,而且Shell脚本程序往往可以在不同版本的Linux/Unix系统上通用。

  Shell编程

  基本格式

  Shell脚本的文件名后缀通常是.sh (当然你也可以使用其他后缀或者没有后缀,.sh是为了规范)

  程序编写格式:

  [java] view plain copy#!/bin/bash

  # 注释使用#号

  代码示例:

  [java] view plain copy//使用vi编辑器编写shell脚本(a.sh不存在则会新建)

  vi a.sh

  进入vi编辑模式后编写执行代码

  [java] view plain copy//固定格式,记住就可以了

  #!/bin/bash

  //执行的代码

  echo Hello World

  赋予权限并执行:

  [java] view plain copy//赋予可执行权限

  chmod +x a.sh

  //执行(调用/bin/bash执行a.sh脚本)

  。/a.sh

  执行结果:

  shell编程使用方法

  下面是几种运行情况:

  [java] view plain copya.sh

  这样的话需要保证脚本具有执行权限并且在环境变量PATH中有(。),这样在执行的时候会先从当前目录查找。

  shell编程使用方法

  [java] view plain copy./a.sh

  只要保证这个脚本具有执行权限即可

  [java] view plain copy/usr/local/a.sh

  只要保证这个脚本具有执行权限即可

  [java] view plain copybash a.sh

  直接可以执行,甚至这个脚本文件中的第一行都可以不引入/bin/bash,它是将hello.sh作为参数传给bash命令来执行的。

  [java] view plain copybash -x /path/to/aa.sh

  bash的单步执行

  [java] view plain copybash -n /path/to/aa.sh

  bash语法检查

  变量

  变量不需要声明,初始化不需要指定类型

  变量命名

  1、只能使用数字,字母和下划线,且不能以数字开头

  2、变量名区分大小写

  3、建议命令要通俗易懂

  注意:变量赋值是通过等号(=)进行赋值,在变量、等号和值之间不能出现空格。

  显示变量值使用echo命令(类似于java中的system.out) ,加上$变量名,也可以使用${变量名}

  例如:

  [java] view plain copyecho $JAVA_HOME

  echo ${JAVA_HOME}

  变量的申明和使用:

  shell编程使用方法

  变量分类:

  Shell变量有这几类:本地变量、环境变量、局部变量、位置变量、特殊变量。

  本地变量:

  只对当前shell进程有效的,对当前进程的子进程和其它shell进程无效。

  定义:VAR_NAME=VALUE

  变量引用:${VAR_NAME} 或者 $VAR_NAME

  取消变量:unset VAR_NAME

  相当于java中的私有变量(private),只能当前类使用,子类和其他类都无法使用。

  比如在一个bash命令窗口下再使用bash,则变成了子进程,本地变量不会被这个子进程所访问。

  shell编程使用方法

  环境变量:

  自定义的环境变量对当前shell进程及其子shell进程有效,对其它的shell进程无效

  定义:export VAR_NAME=VALUE

  对所有shell进程都有效需要配置到配置文件中

  [java] view plain copyvi /etc/profile

  source /etc/profile

  相当于java中的protected修饰符,对当前类,子孙类,以及同一个包下面可以共用。

  和windows中的环境变量比较类似

  自定义的环境变量:

  shell编程使用方法

  局部变量:

  在函数中调用,函数执行结束,变量就会消失

  对shell脚本中某代码片段有效

  定义:local VAR_NAME=VALUE

  相当于java代码中某一个方法中定义的局部变量,只对这个方法有效。

  位置变量:

  比如脚本中的参数:

  $0:脚本自身

  $1:脚本的第一个参数

  $2:脚本的第二个参数

  相当于java中main函数中的args参数,可以获取外部参数。

  shell编程使用方法

  特殊变量:

  $?:接收上一条命令的返回状态码

  返回状态码在0-255之间

  $#:参数个数

  $*:或者$@:所有的参数

  $$:获取当前shell的进程号(PID)(可以实现脚本自杀)(或者使用exit命令直接退出也可以使用exit [num])

  引号

  Shell编程中有三类引号:单引号、双引号、反引号。

  ‘’单引号不解析变量

  [java] view plain copyecho ‘$name’

  “”双引号会解析变量

  [java] view plain copyecho “$name”

  ``反引号是执行并引用一个命令的执行结果,类似于$(。。。)

  [java] view plain copyecho `$name`

  示例:

  shell编程使用方法

技术专区

  • mybatis动态sql详解
  • 用VHDL语言设计数据传输系统中的HDB3编码器
  • 裸机程序如何驱动硬件?看前辈是怎么说的
  • 应用面向对象编程SoC原则的典型示例
  • 嵌入式开发之java常用开发工具介绍
  • shell编程使用方法已关闭评论
    A+
发布日期:2019年07月14日  所属分类:物联网