fgrep:不支持正则表达式
shell编程:
编译器:解释器
编程语言:机器语言,汇编语言,高级语言
静态语言:编译型语言
强类型(变量)
事先转换成可执行 格式
c,c++,java,c#,
动态语言:解释型语言
弱类型
边解释边执行
php,shell,python,perl
面向对象:java,python,perl,c++
面向过程:shell,c,
变量:内存空间,命名
内存:编址的存储单元
进程:
变量类型:事先确定数据的存储格式和长度
字符:
数值:
整形
浮点型:
整型:8bits 256
0-255 溢出
shell:弱类型编程语言
强:变量在使用前,必须事先声明,甚至还需要初始;
NULL
弱:变量用时声明,甚至不区分类型;
bash变量类型:
环境变量:
本地变量:(局部变量)
位置变量:
特殊变量:
本地变量:
bash:
VARNAME=VALUE:作用域为整个bash进程
引用变量:$(username) 括号可以省略
局部变量
local VARNAME=VALUE,作用域为当前代码域
环境变量:作用域为当前shell进程及其子进程
export VARNAME=VALUE
"导出"
脚本在执行时会启动一个子shell进程:
命令行中启动的脚本会继承当前shell环境变量:
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量
位置变量:
$1,$2,....
特殊变量:
$?:上一条命令的执行状态返回值
程序执行:可能有两类返回值
程序执行结果:
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行 1,2,127系统预留
输出重定向:
>
>>
2>
2>>
&>
dev/null:软件设备 bit bucket 数据黑洞
撤销变量:
unset VARNAME
查看当前shell中的变量
set
查看当前shell中的环境变量:
printenv
env
export
脚本:命令的堆砌,按实际需要,结合命令流程控制机制的实现的源程序
shebang:魔数
#!/bin/bash
#注释行