Skip to content

zhangzhuang15/short-shell

Repository files navigation

介绍

背景

在之前的工作中,总是会碰到写一些shell脚本工具的情况,当时学习了shell的基本内容,做了零散的笔记,然后就搁置了。

最近想玩玩儿 Makefile,发现里边的写法基本就是shell脚本的套路,但是时间久了,提笔忘字,查阅之前的笔记,非常零散,需要思考好一阵子才能理解。于是就想整理整理,就形成了你所看到的这个小demo项目。

 

聚焦点

  • 介绍shell脚本基本用法,没有太难太复杂的内容
  • 只站在使用者的角度看shell脚本,不是对shell极其细致、全面的解析
  • 拒绝一切 shell 脚本的奇技淫巧
  • 追求简单、够用

 

如何使用

  1. 先阅读本文档,了解各个文件夹的用途;

  2. 有的文件夹中,会有README.md,请按照它的提示开始学习;

  3. 对于没有README.md的文件夹,可以直接看shell_ 开头的shell脚本,跟着里面的注释做一些操作,进行探索;

  4. 编写时,是用zsh运行的,请根据自己的PC配置,选择对应的shell脚本解释器,比如 bash

  5. 为了快速执行文件夹下的shell脚本,可以使用项目自带的make工具。 用法:在Makefile所在目录下执行make run c=1
    这将执行1-variable/shell_variable.sh文件。
    执行 make help获取更多信息。

 

项目结构

每个文件夹聚焦一个知识点,具体对应关系如下:

文件夹名称 知识点
0-notes 如何使用注释
1-variable 如何使用变量
2-number 如何处理数字
3-string 如何处理字符串
4-array 如何使用数组
5-if 如何使用 if 流程
6-case 如何使用 case 流程
7-for 如何使用 for循环
8-while 如何使用 while循环
9-until 如何使用 until循环
10-function 如何使用 函数
11-read 如何从标准输入接收数据
12-include 如何引入其他 shell脚本
13-command_line 命令行中的参数如何接收

对于第一次接触shell的朋友,可以按照顺序看起;

 

项目发展阶段

2022.01.09

  • 完成主体骨架,内容简单,但基础知识点都照顾到了
  • 不涉及到shell中一些linux指令用法介绍,比如 xargs sed

 

如何贡献

  • 首先,目前的内容仅是根据我个人的使用经验,并结合一些技术网站的资料整理得到,涉及到的情景有限,如果你在工作中使用了shell脚本,涉及到一些本项目没有提到的知识点、坑,欢迎补充。

  • 如果你打算做一些贡献,请建立本地分支,分支命名为shell_<your nicky name or something else>

  • 对于已有的知识点做补充,请在相应的文件夹下,创建example子文件夹,在里面编写你的shell脚本。

  • 对于新的知识点做补充,请参考0-notes~13-command_line文件夹的命名格式创建新的文件夹,当然,标号要从14开始。

    • 请确保一个文件夹只交代一个知识点,并配有README.md以作说明。

    • 编写的 shell 样例脚本尽量简单、明确,注释当中给出一些操作提示,方便读者可以动手参与其中,查看运行现象(PS:光看代码,相当无趣)。