Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
shfshanyue committed Jul 28, 2022
1 parent 913ac3b commit d2cf8e6
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 6 deletions.
4 changes: 3 additions & 1 deletion command/forif.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ if [[ -z $USER ]]; then echo ok; fi
if [[ -z $USER ]]; then echo ok; else echo not ok; fi
```

## function
## 作业

1. 如何遍历输出 1 至 100
1. 判断某个命令是否存在,存在输出 ok,不存在输出 not ok

64 changes: 64 additions & 0 deletions command/function.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# function

shell 中函数语法与其它语言类似,而调用函数,如同使用命令行。

``` bash
hello () {
echo hello
}

// 调用函数
//=> hello
hello
```

## 传递参数

在传递参数时,使用 `$1``$2``$3`... 接收参数,而 `$0` 指函数名。

``` bash
hello () {
echo $0 $1 $2 $3 $4
}

# 调用函数
#=> hello a b c d
hello a b c d
```

## 特殊变量

除此之外,在函数中还有以下特殊的变量

+ `$#`: 参数数量
+ `$*`: 所有参数,字符串形式
+ `$@`: 所有参数,数组形式,其中 `${@[1]}` 等同于 `$1`

如果你第一次接触以上变量,有可能傻傻分不清楚。但是联系到上一篇关于数组的文章,就很容易联想到 `@` 代表所有数组,`#` 代表数组个数。

``` bash
hello () {
echo '$#' ${#}
echo '$*' ${*}
echo '$@' ${@} ${@[1]} $1
}

# 调用函数
# => Output:
# $# 4
# $* a b c d
# $@ a b c d a a
hello a b c d
```

## 命令行即函数

函数的调用方法是不和命令行调用方法一模一样?实际上,可把命令行视为函数。

如果 `$0``$1``$@` 出现在全局,则表明他们是命令行的参数。

## 作业

1. [nodejs 官方镜像的 docker-entrypoint](https://github.com/nodejs/docker-node/blob/main/16/alpine3.16/docker-entrypoint.sh) 是何意思?
1. `$0` `$1` `$@` 各代表什么意思

29 changes: 28 additions & 1 deletion command/path.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,34 @@ $ which node
/usr/local/bin/node
```

## command -v

`command`,用以执行命令,及列出全局命令路径。

``` bash
# 直接执行 node
$ command node

# 打印出 node 的真实执行路径
$ command -v node
/usr/local/bin/node
```

那既然 `command -v``which` 命令一致,那有何不同?

最重要的一个不同点是,当某个命令不存在时,`command -v` 不会输出任何字符,用此常来判断某个命令是否存在。

``` bash
$ which hello
/usr/bin/which: no hello in (/home/train/.autojump/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/train/bin)

# 无任何输出
$ which hello
```

## 作业

1. 了解 $PATH 环境变量用途
2. 了解 which 命令用法
1. 了解 which 命令用法
1. 如何设计一个可以切换 node 版本的命令行工具,比如 n 与 [nvm](https://github.com/nvm-sh/nvm)

4 changes: 2 additions & 2 deletions command/quote.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ $ [[ $USER != "shanyue" ]] && echo ok
$ [[ -z "hi" ]] && echo ok

# ok
$ [[ -z "hi" ]] && echo ok
$ [[ -n "hi" ]] && echo ok
```

对于数字的比较,则需要使用以下字符操作符:
Expand Down Expand Up @@ -110,7 +110,7 @@ $ (( 5 == 5 )) && echo ok

## 作业

1. shell 中 `${}``${}` 有什么区别
1. shell 中 `${}``$()` 有什么区别
1. shell 中 `'``"` 有什么区别
1. shell 中 `[[]]``(())` 有什么区别
1. 如何判断某个文件是否存在
Expand Down
11 changes: 10 additions & 1 deletion deploy/nginx.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,16 @@ nginx 的重要性不言而喻。

我将本文所有关于 docker/nginx 的配置放置在 [simple-deploy](https://github.com/shfshanyue/simple-deploy/tree/master/learn-nginx),可克隆下来通过 docker compose 快速运行。

并将所有的接口示例维护在了 [Learn Nginx By Docker](https://www.apifox.cn/apidoc/project-1264553) 文档,并可通过 [Apifox](https://www.apifox.cn/a1shanyue) 打开并快速调试。
并将所有的接口示例维护在了 [Learn Nginx By Docker](https://www.apifox.cn/apidoc/project-1264553/api-28673521/shanyue) 文档,并可通过 [Apifox](https://www.apifox.cn/a1shanyue) 打开并快速调试。

可通过以下步骤,在 [apifox](https://www.apifox.cn/a1shanyue) 中调试 nginx 接口。

1. [下载 Apifox](https://www.apifox.cn/a1shanyue)
2. 在 Apifox 中克隆该项目
3. 在 Github 中克隆[示例仓库](https://github.com/shfshanyue/simple-deploy/tree/master/learn-nginx)
4. 克隆下来后,进入 learn-nginx 目录
5. `docker-compose up` 启动容器
6. 打开 Apifox 调试接口学习 nginx

![](https://static.shanyue.tech/images/22-07-11/clipboard-8971.3bfb0d.webp)

Expand Down
2 changes: 1 addition & 1 deletion deploy/simple-intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ console.log('hello, world')

## HTTP 报文

HTTP 是在互联网中进行数据交互的协议,你可从互联网中拿到文档、图片、音频及视频各种资源。HTTP 可视为 Web 的基石,更是前端的
HTTP 是在互联网中进行数据交互的协议,你可从互联网中拿到文档、图片、音频及视频各种资源。HTTP 可视为 Web 的基石,更是前端的基石

而最简部署可看做,你向服务器发送一个获取 HTML 资源的请求,而服务端将响应一段 HTML 资源。我们在请求资源的过程中将发送一段请求报文(Request Message),而服务端返回的 HTML 资源为响应报文(Response Message)。

Expand Down

0 comments on commit d2cf8e6

Please sign in to comment.