shell 处理来自终端模拟器的输入,执行解释之后将结果输出给终端。
bash是shell的一种具体实现
v6 shell-sh-bash
shell:1.解释器 解释bash内置命令,GNU核心工具集,node、Python封装的模块等。
2.编程语言 变量,运算,语句,函数
变量:1.自定义变量 作用当前shell 用=
2.环境变量 作用于当前shell及其子shell 用export
3.系统环境变量 作用于所有shell 启动加载
父子shell
先父进程,后子进程,然后下一条命令
用let declare声明变量为整型
declare +(给变量设定类型属性)
-(取消类型属性)
-a(声明为数组类型)
-i(声明为整数型)
-x(声明为环境变量)
-r(声明为只读变量)
-p(显示指定变量被声明的类型)
非登录式shell分为交互式(等待输入给反馈)和非交互式
当我们修改一个文本后需要source执行一下才生效
管道与管道符|,作用是将前一个命令的结果传递给后面的命令(前一个输出为后一个输入)
要求管道右侧的命令必须能接受标准输入,比如grep命令,Is,mv不能直接用,可以用xargs预处理
管道命令仅仅处理stdout,对于stderr会忽略,可以用set-o pipefail设置遇到问题退出
覆盖写入 >>追加写入
<重定向
判断命令
test, 【】,【【】】整数,字符串,文件测试
shell脚本一般.sh结尾,可以文件名允许,解释器运行,source运行
执行过程
1.字符解析(先换行符,后命令连接符,最后空格等)
2.shell 展开(大括号{},波浪号,参数,命令,数学,文件名展开)
3.重定向
4.执行命令
5.收集状态并且返回
shell中判断,选择,循环中的各项表达式与c语言异曲同工,虽然具体的表达式不一样,但是总的基本格式差不多