更新 README.md
This commit is contained in:
36
README.md
36
README.md
@@ -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文件本身的`文件名`|
|
||||
|
||||
Reference in New Issue
Block a user