Shell脚本和编程| 青训营笔记

51 阅读2分钟

Shell基本概念

终端 tty--输入输出设备
shell--命令行解释器
Bash--shell的一种实现
构成:

  • 解释器
    • bash内置命令:man builtin
    • GNU核心工具集:type mv=>/bin/mv
    • 第三方库:node、python封装的模块
  • 编程语言
    • 变量
    • 运算
    • 语句
    • 函数

语法和命令

变量:自定义变量、环境变量declare-x、系统环境变量
配置文件加载:login shell(交互、非交互),non-login shell
运算符和引用
管道和管道符 |,将前一个命令结果传递给后面的命令。grep可以用,is和mv不能直接使用。
重定向,修改标准输入、标准输出和标准错误的文件夹。
判断命令:test、[、[[ 用于整数测试、字符串测试、文件测试 中括号后必须有空格符。[[支持的更丰富。 分支语句:可以将判断合并或者分开。用;;分割,esac结尾。 循环:while循环、until循环、for循环(对列表内容进行循环或者数值方式循环)。
函数:funcName{}{ echo "abc";}、function funcName(){ echo "abc";}。shell自上而下执行,必须先定义函数。return仅表示函数执行状态而不是结果。用local和unset不污染全局执行域。
常用命令(查看日志):grep、sort、wc、head、tail、cut、find、xargs、which

shell执行过程和原理

1,shell以.sh结尾,第一行需要指定用什么命令解释器来启动

#! /bin/bash
#! /usr/bin/env bash

2.启动方式

# 文件名运行
./filename/sh
#解释器运行
bash/filename.sh
# source运行
source.filename.sh

3.执行过程
字符解析--shell展开--重定向--执行命令--收集状态并返回
4.shell展开
大括号展开{...} 波浪号展开~ 参数展开{} 命令替换 数学计算 文件名展开

调试和前端项目集成

1.普通log,使用echo、printf
2.使用set命令
3.vscode debug插件

前端集成
1.exec200kb spwan不会启动子项目进程的区别。node中通过exec、spwan调用shell命令
2.shell调用node命令
3.借助zx库

总结

image-4.png