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
#、?、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 类似,1、$2等获取
函数内return仅表示函数执行状态,不代表函数执行结果
返回结果一般使用 echo、prinf。在外面使用$0、获取结果
如果没有return,函数状态是上一条命令的执行状态,存储在$?中