更新 README.md

This commit is contained in:
2024-07-24 16:03:00 +08:00
parent aa48424c9a
commit 2392bb001b

View File

@@ -2,17 +2,17 @@
<h2 align="center">shell脚本语法 学习笔记</h2>
- [00. 使用环境和说明](#00-使用环境和说明)
- [01. shell概述](#01-shell概述)
- [0. 使用环境和说明](#0-使用环境和说明)
- [1. shell概述](#1-shell概述)
- [1.1 脚本解释器](#11-脚本解释器)
- [1.2 调用脚本](#12-调用脚本)
- [1.3 第一个脚本helloworld](#13-第一个脚本helloworld)
- [1.4 Linux管道](#14-linux管道)
- [02. shell中特殊字符](#02-shell中特殊字符)
- [03. 转义符](#03-转义符)
- [04. shell中参数`$0`、`$?`、`$!`、`$$`、`$*`、`$#`、`$@`](#04-shell中参数0)
- [2. shell中特殊字符](#2-shell中特殊字符)
- [3. 转义符](#3-转义符)
- [4. shell中参数: `$0`、`$?`、`$!`、`$$`、`$*`、`$#`、`$@`](#4-shell中参数0)
- [5. 变量问题](#5-变量问题)
- [5.1 shell变量概述](#51-shell变量概述)
- [5.1 shell变量概述](#51-shell变量概述)
- [5.2 内部变量(系统变量)](#52-内部变量系统变量)
- [5.3 自定义变量基本语法](#53-自定义变量基本语法)
- [5.4 环境变量](#54-环境变量)
@@ -81,19 +81,19 @@
- [使用方式](#使用方式)
- [19. 参考资源](#19-参考资源)
## 00. 使用环境和说明
## 0. 使用环境和说明
- centos8
- Kernel 4.18.0-305.12.1.el8_4.x86_64
- x86_64 GNU/Linux
- bash 版本4.4.20
- bash 版本: 4.4.20
- **本文不介绍和Linux 指令相关的内容**
- **先修内容:`Linux基本命令`(推荐书籍:`《鸟哥Linux私房菜:基础学习》`**
- **只介绍本人在场景中使用后,结合参考书籍做的一个学习笔记,未使用过的暂时不更新**
- **部分图片来源书籍《高级Bash脚本编程指南》**
- **所有笔记的内容均可通过 `cmd --help` 查看具体的用法**
## 01. shell概述
在shell中每个脚本的开头都使用 `#!` ,就是告知系统文件的执行都需要指定一个`解释器`。指定一个文件类型的特殊标记。占用 `2 字节`
## 1. shell概述
在shell中, 每个脚本的开头都使用 `#!` ,就是告知系统文件的执行都需要指定一个`解释器`。指定一个文件类型的特殊标记。占用 `2 字节`
### 1.1 脚本解释器
shell极脚本都是以 `#!`开头,告知系统该文件的执行需要一个解释器。
@@ -107,7 +107,7 @@ shell极脚本都是以 `#!`开头,告知系统该文件的执行需要一个
#!/usr/awk -f
```
解释说明
- `#!/bin/sh` linux系统上默认是bash多数UNIX商业OS中也默认shell。
- `#!/bin/sh` linux系统上默认是bash, 多数UNIX商业OS中也默认shell。
### 1.2 调用脚本
执行脚本的三种方式:
@@ -135,12 +135,12 @@ chmod u+rx helloworld.sh #只给脚本的所有者可读和可执行权限
echo "helloworld"
```
目前Linux/unix系统中普遍的shell脚本的第一行是`#!/bin/sh` 或者 `#!/bin/bash`
目前Linux/unix系统中, 普遍的shell脚本的第一行是: `#!/bin/sh` 或者 `#!/bin/bash`
### 1.4 Linux管道
在Linux中可以将两个或者多个命令连接到一起的符号`(|)`,称为`管道符`
思想:把上一个命令的输出作为下一个命令的输入(也就是因连接而形成`管道pipe`概念)。
思想:把上一个命令的输出作为下一个命令的输入(也就是因连接而形成`管道 (pipe)`概念)。
语法格式:
@@ -153,7 +153,7 @@ cat helloworld.sh | grep hello
管道的应用:在`grep``tail``cat``sed``awk`等Linux命令中较为常见。
## 02. shell中特殊字符
## 2. shell中特殊字符
|特殊字符|功能|说明|注意|
|:--:|--|--|--|
@@ -177,8 +177,8 @@ cat helloworld.sh | grep hello
|`[ ]`|1.测试条件<br>2.数组元素 <br>3.字符范围|作为字符范围时,方括号描述一个匹配的字符范围||
|`> &> >& >> < <>`|重定向|||
### 03. 转义符
转义符是一种引用单个字符的方法。添加`转义符\` 使得shell中的某个字符失去原有特殊含义。
### 3. 转义符
转义符是一种引用单个字符的方法。添加`转义符(\)` 使得shell中的某个字符失去原有特殊含义。
注意:在`echo``sed` 中谨慎使用转义符,否则会有相反效果。
@@ -190,7 +190,7 @@ cat helloworld.sh | grep hello
|`\v`|表示垂直制表符||
|`\b`|表示后退符||
|`\a`|表示"alert" (蜂鸣器或闪烁)||
|`\0xx`|转换为八进制的ASCII码等价于*0xx*||
|`\0xx`|转换为八进制的ASCII码, 等价于*0xx*||
|`\"`|表示双引号||
|`\$`|表示`$`本身的意思,跟在后面的变量名不会起作用|`echo "\$variables~~~~"`|
|`\\`|表示反斜线|`echo "\\" #结果为 \`||
@@ -198,7 +198,7 @@ cat helloworld.sh | grep hello
~~赋值给变量的字符串的元素也会被转义, 但是不能把一个单独的转义符赋值给变量。~~
## 04. shell中参数`$0`、`$?`、`$!`、`$$`、`$*`、`$#`、`$@`
## 4. shell中参数`$0`、`$?`、`$!`、`$$`、`$*`、`$#`、`$@`
|字符符号|功能(用途)|
|:--:|--|
|`$0`|shell文件本身的`文件名`|