一.Shell 概念
Shell 英文是“壳”,Shell 是一块包裹着系统核心的壳,处于操作系统的最外层。 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。通过编写 Shell 命 令发送给 linux 内核去执行,操作就是计算机硬件,所以 Shell 命令是用户操作计算机硬件 的桥梁,Shell 是命令,类似于 Windows 系统中的 Dos 命令。
同时它可以作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行 预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多 在高级语言中才具有的控制结构,包括循环和分支。
为什么学习 Shell 脚本?
Shell 脚本语言的好处是简单、易学、易用,适合处理文件和目录之类的对象,以简单 的方式快速完成某些复杂的事情。通过 Shell 命令编程语言来提高 Linux 系统的管理工作效 率。
二.Shell 的运行过程
当用户下达指令给该操作系统的时候,时间上是把指令告诉 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.脚本格式
- 脚本文件后缀名规范
Shell 脚本文件就是一个文本文件,后缀名建议使用.sh 结尾。 - 首行格式规范
#!/bin/bash
设置当前 Shell 脚本文件采用 bash 解析器运行脚本代码
3. 注释格式
单行注释
#注释内容
多行注释
:<<!
#注释内容 1
#注释内容 2
!
【示例】第一个 Shell 脚本 HelloWorld
- 进入 Linux 终端,编写一个 Shell 脚本 helloworld.sh。
[root@node1 ~]# vim helloworld.sh
- 编辑文件
#输出helloworld
echo "helloworld!"
4.2.脚本文件执行的三种方式
- sh 解析器执行方式 sh 脚本文件 利用 sh 命令执行脚本,本质就是使 用 Shell 解析器运行脚本文件
- bash 解析器执行方 式 bash 脚本文件 利用 bash 命令执行脚本,本质就是 使用 Shell 解析器运行脚本文件
- 仅路径执行方式 ./脚本文件 执行当前目录下脚本文件,注意:脚 本文件自己执行需要具有可执行权限,否 则无法执行。
添加权限: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 文件中增加内容“大连东软信息学院”
- 使用 mkdir 创建/root/neusoft 目录
[root@node1 ~]# mkdir neusoft
- 创建脚本文件 test.sh
[root@node1 ~]# touch test.sh
- 编辑脚本文件
3.1 命令 1:vim 创建文件
3.2 命令 2:输出数据“大连东软信息学院”到 onetest.txt 文件中
输出数据到文件中的命令:数据>>文件名
#在root/neusoft目录下创建文件onetest.txt文件
touch /root/neusoft/onetest.txt
#在onetest文件中写入内容
echo "大连东软信息学院" >> /root/neusoft/onetest.txt
- 执行脚本文件使用 cat 命令查看文件内容
[root@node1 ~]# bash test.sh
[root@node1 ~]# cat neusoft/onetest.txt
大连东软信息学院