Shell 编程基础要点总结l青训营笔记

64 阅读1分钟

Shell 脚本与编程 价值:node.js,Linux,编写TCE, SCM, Docker脚本,完成服务器部署 Shell基础概念 Tty (I/O环境);shell (解释执行结果给终端)& Bash(理解为类与实例关系);终端获取用户输入,展示运算结果的硬件设备

构成 解释器(内置命令,GNU核心工具集,第三方库) 编程语言(函数,运算,语句,变量(自定义,环境,系统环境))

父子shell(交由子进程执行)

自定义变量(需要let declare 声明变量为整型)

系统环境变量符号 Echo $HOME/USER/PS1

配置文件加载 Login shell No-login shell:ssh, bash (交互式,非交互式)

Source ~/.bashrc

运算符 “”部分引用 ‘’完全引用 ‘‘执行命令和()效果一样 算数运算(()) || cmdl执行完且返回码非0,则继续执行cmd2 ;串行执行且没有关系

管道(语法:cmd1 | cmd2) 管道与管道符,作用是把前一个命令结果传给后面 要求:管道右侧命令要接受标准输入才行,如grep,ls,mv不能直接使用,可以用来预处理;xargs转为参数列表形式再使用 注意:仅对于stdout,忽略stderr,可使用set -o pipefail设置shell遇到管道错误退出

重定向 输出重定向符号

:覆盖

:追加 2>:错误输出写入 &>:正确和错误输出统一写入到文件中

判断命令 三种判断符号:test,[,[[ 整数测试 test n1eq/lt/gtn1 -eq/lt/gt n2 字符串测试 文件测试 [ “hello world” == “hello” ] 分支语句 If (fi)和case(程序段分割:;; *) esac) 循环 While/until(条件成立跳出循环)/for 都是do done

函数 语法一:funcName(){ echo “abc”; } 语法二:function funcName() { echo “abc”; } 注意:echo,prinf打印结果;函数必须使用前定义;return只表示执行状态,若没有return,函数状态是上一条命令的执行状态

模块化

执行过程和原理 执行

  1. Shell脚本以.sh结尾,第一行需要指定命令来执行 !/bin/bash
  2. 启动方式 ./filename.sh Bash/source ./filename.sh

执行过程

  1. 字符解析(识别换行符,命令连接符,空格)
  2. Shell展开
  3. 重定向,将stdin, stdout, stderr变更
  4. 执行命令
  5. 收集状态并返回

Shell展开 大括号展开a{b,c,d}e => abe ace ade 波浪号展开 参数展开 命令替换 数学计算 文件名替换

调试和集成 Brew install bash Which -a bash Bash路径加入PATH

Touch run.sh

课程总结