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 [ 函数库的路径 ]
执行过程和原理
- shell脚本一般以 .sh结尾 第一行需要指定命令解释器
2.启动方式:文件名运行->解释器运行->source运行
3.执行过程:字符解析->Shell展开->重定向->执行命令->收集状态并返回
其中Shell展开包括大括号展开、波浪号展开、参数展开、命令替换、数学计算和文件名展开
调试和前端集成
万物皆命令,在执行命令过程中也是逐行、逐个连接符、逐个空格解析出最小化命令执行