00 基本操作
•1,花括号 mkdir -p sdfsdf/{a,b,c}sdfsdf
•2,波浪线 cd ~god
•3,变量&参数 $ $$ ${}(.....)
•4,命令替换 ls -l `echo $path`
•5,算术扩展 num=$((3+4))
•6,word拆分,$IFS
•7,路径 *(零到多个任意字符)?
•8,引用删除 echo "hello"
•*,重定向 >
01 程序自身都有I/O
•0:标准输入
•1:标准输出
•2:错误输出
–控制程序I/O位置
–一切皆文件
•/proc/$$/fd
–程序是否处理I/O?
–绑定顺序:从左到右
02 特殊:
–$#:位置参数个数
–$*:参数列表,双引号引用为一个字符串
–$@:参数列表,双引号引用为单独的字符串
–$$:当前shell的PID:接收者
•$BASHPID:真实
03 管道
–$?:上一个命令退出状态
•0:成功
•other:失败
04 环境变量
环境变量:env,printenv,export
export定义变量
导出到子shell
fork() Copy On Write O(1)
适用于函数
unset:取消变量
set:查看shell的变量
05 退出状态
`–echo $?`
06 逻辑判断
–command1 && command2
–command1 || command2
07 算术表达式
–let 算术运算表达式
•let C=$A+$B
–$[算术表达式]
•C =$[$A+$B]
–$((算术表达式))
•C=$(($A+$B))
–expr 算术表达式
•注意:表达式中各操作数及运算符之间要有空格。而且要使用命令引用
•C=`expr $A + $B`
•help let
08 条件表达式
–[ expression ]
–test expression
–[[ expression ]]
练习题:
- 添加用户
- 用户密码同用户名
- 静默运行脚本
- 避免捕获用户接口
- 程序自定义输出