一.Shell 概念

Shell 英文是“壳”,Shell 是一块包裹着系统核心的壳,处于操作系统的最外层。 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。通过编写 Shell 命 令发送给 linux 内核去执行,操作就是计算机硬件,所以 Shell 命令是用户操作计算机硬件 的桥梁,Shell 是命令,类似于 Windows 系统中的 Dos 命令。
Shell 脚本入门_bash
同时它可以作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行 预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多 在高级语言中才具有的控制结构,包括循环和分支。

为什么学习 Shell 脚本?
Shell 脚本语言的好处是简单、易学、易用,适合处理文件和目录之类的对象,以简单 的方式快速完成某些复杂的事情。通过 Shell 命令编程语言来提高 Linux 系统的管理工作效 率。

二.Shell 的运行过程

Shell 脚本入门_服务器_02
当用户下达指令给该操作系统的时候,时间上是把指令告诉 shell,经过 shell 解释, 处理后让内核做出相应的动作。系统的回应和输出的信息也由 shell 处理,然后显示在用户 的屏幕上。

三.Shell 解析器

查看 linux 系统 centos 支持的 shell 解析器
cat /etc/shells

[root@node1 ~]# cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash

打印输出当前 centos 默认的解析器是 bash 语法:echo $SHELL

[root@node1 ~]# echo $SHELL
/bin/bash

其中:echo:用于打印输出数据到终端 $SHELL:是全局共享的读取解析器类型环境变量,所有的 Shell 程序都可以读取的变量

四.Shell 编写格式与执行方式

4.1.脚本格式

  1. 脚本文件后缀名规范
    Shell 脚本文件就是一个文本文件,后缀名建议使用.sh 结尾。
  2. 首行格式规范
#!/bin/bash

设置当前 Shell 脚本文件采用 bash 解析器运行脚本代码
3. 注释格式
单行注释
#注释内容
多行注释

:<<! 
#注释内容 1
#注释内容 2
!

【示例】第一个 Shell 脚本 HelloWorld

  1. 进入 Linux 终端,编写一个 Shell 脚本 helloworld.sh。
[root@node1 ~]# vim helloworld.sh
  1. 编辑文件
#!/bin/bash
#输出helloworld
echo "helloworld!"

4.2.脚本文件执行的三种方式

  1. sh 解析器执行方式 sh 脚本文件 利用 sh 命令执行脚本,本质就是使 用 Shell 解析器运行脚本文件
  2. bash 解析器执行方 式 bash 脚本文件 利用 bash 命令执行脚本,本质就是 使用 Shell 解析器运行脚本文件
  3. 仅路径执行方式 ./脚本文件 执行当前目录下脚本文件,注意:脚 本文件自己执行需要具有可执行权限,否 则无法执行。

添加权限:chmod a+x helloworld.sh
三种方式的区别:sh 或 bash 执行脚本文件方式是直接使用 Shell 解析器运行脚本文件,不 需要可执行权限,仅路径方式是执行脚本文件自己,需要可执行权限。

sh 方式运行
bash 方式运行
仅路径方式运行

[root@node1 ~]# sh helloworld.sh 
helloworld!
[root@node1 ~]# bash helloworld.sh
helloworld!
[root@node1 ~]# ./helloworld.sh
-bash: ./helloworld.sh: Permission denied
[root@node1 ~]# chmod a+x helloworld.sh
[root@node1 ~]# ./helloworld.sh
helloworld!

五.解释执行多个命令

案例:执行 test.sh 脚本,实现在/root/neusoft/目录下创建一个 onetest.txt,在 onetest.txt 文件中增加内容“大连东软信息学院”

  1. 使用 mkdir 创建/root/neusoft 目录
[root@node1 ~]# mkdir neusoft
  1. 创建脚本文件 test.sh
[root@node1 ~]# touch test.sh
  1. 编辑脚本文件
    3.1 命令 1:vim 创建文件
    3.2 命令 2:输出数据“大连东软信息学院”到 onetest.txt 文件中
    输出数据到文件中的命令:数据>>文件名
#!/bin/bash
#在root/neusoft目录下创建文件onetest.txt文件
touch /root/neusoft/onetest.txt
#在onetest文件中写入内容
echo "大连东软信息学院" >> /root/neusoft/onetest.txt
  1. 执行脚本文件使用 cat 命令查看文件内容
[root@node1 ~]# bash test.sh 
[root@node1 ~]# cat neusoft/onetest.txt
大连东软信息学院