SHELL 基本知识

SHELL 的基本知识

      • 一、为什么学习shell
      • 二、shell 的定义和功能
      • 三、shell 的分类
      • 四、shell 的脚本的基本元素
      • 五、shell 脚本编写规范
      • 六、shell 脚本的执行方式
        • 1. 交互式执行
        • 2. 作为程序文件执行(脚本执行)-- 四种方法
      • 七、shell 脚本的退出状态

一、为什么学习shell

对于一个合格的系统管理员来说,学习和掌握Shell编程是非常重要的。通过编程,可以在很大程度上简化日常的维护工作,使得管理员从简单的重复劳动中解脱出来。

二、shell 的定义和功能

  • Shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统。它的作用类似于 Windows操作系统中的命令行,但是,Shell的功能远比命令行强大的多。在UNIX或者localhost中, Shell既是用户交互的界面,也是控制系统的脚本语言。
  • 如果有一系列经常需要使用的命令,把它存储在一个文件里,shell可以读取这个文件并顺序执行其中的命令,我们把这样的文件就叫shell脚本。shell脚本按行解释文件里的命令。

三、shell 的分类

  • Bourne Shell
    标识为sh,该Shell由Steve Bourne在贝尔实验室时编写。在许多Unix系统中,该Shell是root用户的默认的Shell。(但红帽8.2当前系统的默认的shell是/bin/bash)
  • Bourne-Again Shell
    标识为bash,该Shell由Brian Fox在1987年编写,是绝大多数localhost发行版的默认的Shell。
  • Korn Shell
    标识为ksh,该Shell由贝尔实验室的David Korn在二十世纪八十年代早期编写。它完全向上兼容 Bourne Shell 并包含了C Shell 的很多特性。
  • C Shell
    标识为csh,该Shell由Bill Joy在BSD系统上开发。由于其语法类似于C语言,因此称为C Shell。
    • 查看当前系统支持的shell
      命令cat /etc/shells
    • 查看当前系统默认shell
      命令echo $SHELL

四、shell 的脚本的基本元素

  • 声明:声明用哪个命令解释器来解释并执行当前脚本文件中的语句,一般写的解释器为
    #!/bin/bash 或 #!/bin/sh
  • 命令:可执行语句,实现程序的功能。(变量定义,if-else,for,while)
  • 注释:说明某些代码的功能,通过在代码中增加注释可以提高程序的可读性。
    • 单行注释#
    • 多行注释:<      BLOCK(end)
  • 例:
    SHELL 基本知识_第1张图片

五、shell 脚本编写规范

  1. 变量命名有意义
  2. 文件开头指定脚本解释器,也就是声明
  3. 开头加版本特权等信息
  4. 脚本中尽量不要使用中文注释
  5. 多使用内部命令
    常用的内部命令有:echo、eval、exec、export、read、shift、exit···

六、shell 脚本的执行方式

1. 交互式执行

  • do–>执行,done–>结束
  • 缺点:不能永久保存代码
  • 例如:
    SHELL 基本知识_第2张图片

2. 作为程序文件执行(脚本执行)-- 四种方法

  • bash filename.sh会产生子进程,再运行,使用当前指定的bash shell去运行。
    在这里插入图片描述
  • ./filename.sh会产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式执行需要x权限
    在这里插入图片描述
  • source filename.sh(source命令是一个shell内部命令,其功能是读取指定的shell程序文件,并且依次执行其中的所有的语句,并没有创建新的子shell进程,所以脚本里面所有创建的变量都会保存到当前的shell里面)
    在这里插入图片描述
  • . filename.sh(和source一样,也是使用当前进程执行)
  • 注意:如果在命令行定义一个变量data,再创建一个脚本写 echo $data ,执行该脚本。bash 和 ./ 这两种执行方式不会输出值,source 和 . 可以。因为命令行定义变量是定义在当前进程的,而前两种会产生新的子进程运行,后两种才是在当前进程下执行脚本。

七、shell 脚本的退出状态

  • 在UNIX或者Linux中,每个命令都会返回一个退出状态码。退出状态码是一个整数,其有效范围为0~255。通常情况下,成功的命令返回0,而不成功的命令返回非0值。非0值通常都被解释成一个错误
    码。行为良好的UNIX命令,程序和工具都会返回0作为退出码来表示成功。
    • 命令echo $?  # 获取退出状态码
  • Shell脚本中的函数和脚本本身也会返回退出状态码。在脚本或者是脚本函数中执行的最后的命令会决定退出状态码。另外,用户也可以在脚本中使用exit语句将指定的退出状态码传递给Shell。

你可能感兴趣的:(SHELL,bash,linux)