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

68 阅读2分钟

Shell脚本和编程

Shell的基础概念

物理终端:获取用户输入

软件终端tty:输入输出

终端模拟器:

Shell:

Bash:Shell的具体实现

Shell的构成

解释器+编程语言

语法和命令

变量: 自定义变量(当前Shell)、环境变量(当前和子Shell)、系统环境变量(所有Shell)

配置文件加载

login shell: /etc/profile->First of:-/bash_profile -/bash/login -/.profile ->-./bashrc->finish

non-login shell: -./bashrc->/etc/bashrc->finish

管道

本质是将多个程序进行了一个连接

管道与管道符|,目的是将前一个命令的结果传给后一个命令

语法:cmd1 | cmd2

###重定向

输出重定向符号:

{ > :覆盖写入文件

{>>:追加写入文件

2>:错误输出写入文件

&>:正确和错误统一写入文件 }

输入重定向符号:

<

<<

判断命令

shell中提供了test和 > [ 和 [[

三种判断符号,可用于整数测试,字符串测试和文件测试 例如:test condition>

[ condition ]

[[ condition ]]

分支语句

语法1: if condition ;

then 程序段

elif condition ;

then 程序段

esle 程序段

fi

语法2: case $变量 in:

  “第一个变量内容”)
     程序段
     ;;
     
     

“第一个变量内容”) 程序段 ;; *)

      程序段
     ;;
     
     

esac

###循环

while
until for 可对列表进行循环

函数

1.funcName(){ echo "abc";}

2.function funcName() { echo "abc";}

local 仅在本函数域生效或upset

模块化

原理:在当前shell内执行函数文件

source [ 函数库的路径 ]

执行过程和原理

  1. shell脚本一般以 .sh结尾 第一行需要指定命令解释器

2.启动方式:文件名运行->解释器运行->source运行

3.执行过程:字符解析->Shell展开->重定向->执行命令->收集状态并返回

其中Shell展开包括大括号展开、波浪号展开、参数展开、命令替换、数学计算和文件名展开

调试和前端集成

万物皆命令,在执行命令过程中也是逐行、逐个连接符、逐个空格解析出最小化命令执行