正好我看最近在shell脚本编程,先把我最近在看的但是没怎么注意的内容。
-d file 检查file是否存在并是一个目录
-e file 检查file是否存在
-f file 检查file存在并是一个文件
-r file 检查file是否存在并可读
-s file 检查file是否存在并为非空
-w file 检查file是否可读并可写
-x file 检查file是否存在并可以
-0 file 检查file文件是否属于当前用户
-G file 检查file用户组是否和当前用户的默认组相同
file1 -nt file2 检查file1是否比file2新
file1 -ot file2 检查file1是否比file2旧
bash脚本:命令按实际需求结合命令流程控制实现的堆砌的源程序
编程语言分类:机器语言、汇编语言、高级语言
静态语言:编译型语言(一般是强类型)
动态语言:解释型语言(弱类型语言),而bash实际上是一种脚本解释器
bash变量的类型:
环境变量
本地变量
位置变量
特殊变量
环境变量
作用域为整个bash进程
export VARNAME=VALUE 或
VARNAME=VALUE;export VARNAME
本地变量
作用域为当前的代码片段
local VARNAME=VALUE
位置变量
在向脚本中传递参数的时候会有效
$1,$2
特殊变量
$?上一个命令执行结果的状态码
程序返回的状态码(0-255)
0 执行成功
1-255 执行失败
当在执行脚本的时候会在当前的shell下开启一个子shell进程,该子shell会继承当前shell中的环境变量
/dev/null 软件模拟设备,往往当作黑洞向里面丢弃不要的数据
id xin &> /dev/null 表示不论错误还是正确输出我们都将结果丢弃,并不予显示
unset VarName 撤销已经存在的变量
set 查看当前当前的所有变量
printenv、env、export 都能查看当前shell中的环境变量