
第一章:什么是shell
1、概念
在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。
同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。
shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以[shell script](https://baike.baidu.com/item/shell script/18662947)(非交互)方式执行。shell script是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shell script是命令行命令简单的组合到一个文件里面。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k0xm8B5l-1650636446334)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1650539159545.png)]](/https://i-blog.csdnimg.cn/blog_migrate/e1f26d8054781be3f0865c41198e136b.png)
2、解析器
Shell基本上是一个命令解释器,类似于DOS下的COMMAND.COM。它接收用户输入的命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourne shell和[C Shell](https://baike.baidu.com/item/C Shell/5098313)。
常用的Shell解释器有四种,但是一般sh bash就可以解释,sh软连接到bash,也就是说,sh最终调用的还是bash
查看 shell 4中解析器如下:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IIbxzIxJ-1650636446335)(https://gitee.com/wanghuiwen/typora_-image_repository/blob/master/1650539862150.png)]](/https://i-blog.csdnimg.cn/blog_migrate/b898e6a938859d81c051f4f6d1cc2a2b.png)
Centos 默认的 解析 器是 是 bash
第二章:入门
1、脚本格式
脚本以#!/bin/bash 开头(指定解析器)
2、第一个脚本
需求:输出 helloa,辉哥。
-
创建一个shell文件,并写入shell程序


-
脚本执行命令采用 bash 或 sh+脚本的相对路径或绝对路径即可直接执行,不需要可执行权限
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F7GgPxIr-1650637782853)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/1650540793493.png)]](/https://i-blog.csdnimg.cn/blog_migrate/b25968c5945e97768ba094eae6379b6f.png)
3.采用输入脚本的绝对路径或相对路径执行脚本**(必须具有可执行权限+x)**

注意:第一种执行方法,本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。
这种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则子 shell 关闭,回到父 shell 中。
第三章:变量
1、常用系统变量
H O M E 、 HOME、 HOME、PWD、 S H E L L 、 SHELL、 SHELL、USER 等
查看系统变量
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wbv86w4o-1650636446341)(https://gitee.com/wanghuiwen/typora_-image_repository/blob/master/1650541913279.png)]](/https://i-blog.csdnimg.cn/blog_migrate/d0592073690729a26ff617ac20c50a8c.png)
2、自定义 变量
-
基本语法
定义变量:变量名=变量值,注意,=号前后不能有空格
撤销变量:unset 变量名
声明静态变量:readonly 变量,注意:不能 unset -
变量定义规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
- 等号两侧不能有空格
- 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
- 变量的值如果有空格,需要使用双引号或单引号括起来。
-
示例
定义变量 A [root@iZbp1dlz0y8paqewduhmx6Z /]# A=6 [root@iZbp1dlz0y8paqewduhmx6Z /]# echo $A 6 给变量 A 重新赋值 [root@iZbp1dlz0y8paqewduhmx6Z /]# A=8 [root@iZbp1dlz0y8paqewduhmx6Z /]# echo $A 8 撤销变量 A [root@iZbp1dlz0y8paqewduhmx6Z /]# unset A [root@iZbp1dlz0y8paqewduhmx6Z /]# echo $A 声明静态的变量 B=2,不能 unset [root@iZbp1dlz0y8paqewduhmx6Z /]# readonly B=2 [root@iZbp1dlz0y8paqewduhmx6Z /]# echo $B 2 [root@iZbp1dlz0y8paqewduhmx6Z /]# unset B -bash: unset: B: cannot unset: readonly variable 在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算 [root@iZbp1dlz0y8paqewduhmx6Z /]# C=1+2 [root@iZbp1dlz0y8paqewduhmx6Z /]# echo $C 1+2 变量的值如果有空格,需要使用双引号或单引号括起来 [root@iZbp1dlz0y8paqewduhmx6Z /]# D= i love you -bash: i: command not found [root@iZbp1dlz0y8paqewduhmx6Z /]# D="i love you " [root@iZbp1dlz0y8paqewduhmx6Z /]# echo $D i love you 可把变量提升为全局环境变量,可供其他 Shell 程序使用 首先在hello.sh中输出 echo $B 发现是没有值的 [root@iZbp1dlz0y8paqewduhmx6Z /]# ./wangstudy/hello.sh hella,辉哥 然后将B变量提升到全局变量 再次执行发现有值了 [root@iZbp1dlz0y8paqewduhmx6Z /]# export B [root@iZbp1dlz0y8paqewduhmx6Z /]# ./wangstudy/hello.sh hella,辉哥 2
3、特殊变量
-
$n:功能描述:n 为数字,$0 代表该脚本名称,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如{10}
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RcIJpfqY-1650636446342)(https://gitee.com/wanghuiwen/typora_-image_repository/blob/master/1650544399557.png)]](/https://i-blog.csdnimg.cn/blog_migrate/00d3dbe3153cc61877e480257a10efd8.png)
[root@iZbp1dlz0y8paqewduhmx6Z wangstudy]# vim hello.sh [root@iZbp1dlz0y8paqewduhmx6Z wangstudy]# ./hello.sh 1 2 3 hella,辉哥 2 1 2 3 [root@iZbp1dlz0y8paqewduhmx6Z wangstudy]# -
$# 获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性.
echo "hella,辉哥" echo '===================$sn========================' echo

这篇博客详细介绍了Shell的基础知识,包括Shell的概念、解析器、脚本格式、变量、运算符、条件判断、流程控制、read命令、函数、正则表达式和文本处理工具如cut和awk的使用方法。通过实例讲解,帮助读者掌握Shell编程入门技巧。

9406

被折叠的 条评论
为什么被折叠?



