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

78 阅读2分钟

Shell脚本和编程

学习shell的价值:

1、  Linux服务器的基本操作和管理

2、  前端Node.js服务的进程管理、问题排查、资源监控等运维操作

3、  使用shell编写TCE、SCM、Docker脚本,完成服务编译和部署

一、Shell基础概念

终端:获取用户输入、展示运算结果的硬件设备

  终端模拟器:Mac iTem2等、关联虚拟tty的输入输出软件

  Tty : teletypewriter的简称、和终端等价,早期指电传打印机,在Linux中是输入/输出 环境

  Shell:command interpreter,处理来自终端模拟器的输入,解释执行之后输出结果给终端

  Bash:shell的一种具体实现

(1)发展

贝尔实验室在1971年为UNIX开发了第一个shell,称为V6 shell

Stephen Bourne 在贝尔实验室为V7 UNIX所开发的Bourne shell,即sh

开源组织GNU为了取代Bourne shell开发的Bourne-Again shell,即Bash

(2)构成

shell 不仅提供了与内核和设备交互的方法,还集成了 些今天软件开发中通用的设计模式(比如管道和过滤器),具备控制流程,循环,变量,命令查找的机制。

既是命令解释器,也是一门编程语言,作为命令解释器,它提供给用户接口,使用丰富的GNU工具集,第三方的或者内置的,比如cd、pwd、exec、test ,netstat 等等。

二、语法

(1)变量
类型作用域声明方式规范
自定义变量当前shell=字符串、整型、浮点型、日期型
环境变量当前shell及其子shellExport\declare -x 
系统环境变量所以shell启动加载 
(2)自定义变量
选项含义
-给变量设定类型属性
+取消变量的类型属性
-a将变量声明为数组类型
-i将变量声明为整数型
-x将变量声明为环境变量
-r将变量声明为只读变量
-p显式指定变量的被声明的类型
(3)       系统环境变量
变量名含义常见操作
$0当前shell名称/脚本名称11、2等可以获取到传入参数
$#传入脚本的参数数量If[$#-gt 1]
$*传入脚本的所有参数 
$?上条命令执行的状态码If[$?-eq 0];
$PS1命令提示符Export PS1=”\U@\H\W>”
$HOME用户主文件夹Cd~
$PATH全局命令的搜索路径PTAH=$PTAH:[新增路径]