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

48 阅读1分钟

Shell基础概念

概念

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

tty:teletypeWriter的简称,和终端等价,在linux中式输入/输出环境

终端模拟器:Mac Terminal。iTerm2等,关联虚拟tty的输入输出软件

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

Bash: shell的一种具体实现

构成

shell:

解释器
    bash内置命令
        。【echo let read等
    GNU核心工具集
        ls mv cat等
    第三方库
    node.python等封装的模块

编程语言
    变量
        自定义变量
        环境变量
        系统环境变量
     
    运算
        逻辑运算符
        算数运算符
    
    语句
        判断
        分支
        循环
    函数

语法命令

自定义变量

作用域为当前shell脚本

-、+、-a、-i、-x、-r、-p、

系统环境变量

作用域为所有shell

00、#、*、?、PS1PS1、HOME、$PATH

管道

管道与管道符|,作用是将前一个命令的结果传递给后面的命令

语法: cmd1 | cmd2

要求:管道右侧的命令必须能接受标准输入才可以,比如grep命令,ls、mv等不能直接使用,可以使用xargs预处理

注意:管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -0 pipefail设置shell遇到管道错误退出

分支语句

(1)

    if condition;then

    程序段
    
    elif condition;then
    
    程序段
    
    else
    
    程序段
    
    fi

(2)

  case $变量 in:
  
      “第一个变量内容)
      
      程序段
      
      ;;
      
      “第一个变量内容“)
      
      程序段
      
      ;;
      
 esac

循环

while循环

while condition;do程序段;done

until循环

until condition;do程序段;done

for循环

for var in【words...】;do 程序段;done

函数

(1)funcName(){echo ”abc“;}

(2)function funcName(){echo ”abc“;}

注意:

shell自上而下执行,函数必须在使用前定义

函数获取变量和shell script 类似,0代表函数名,后续参数通过0代表函数名,后续参数通过1、$2等获取

函数内return仅表示函数执行状态,不代表函数执行结果

返回结果一般使用 echo、prinf。在外面使用$0、获取结果

如果没有return,函数状态是上一条命令的执行状态,存储在$?中