1.shell命令中的符号
* 通配符
{n..m}
mkdir day{2..6} 创建day2到day6
mkdir {1,2,23} 创建1.c 2.c 23.c
? 只通配一个字符
[] 一个一个字符看
rm [1234].c 删除1.c 2.c 3.c 4.c
rm [1-8].c 删除1到8.c
rm [a-c].c
rm [^134].c 除了1.c 3.c 4.c其它一位的.c
管道
命令1 | 命令2 前面的输出当作命令2的输入
重定向
> 将前面的输出放入后面 并清空
>>追加的方式
2.shell脚本
shell命令: 命令行解释器
后缀为.sh
执行脚本 :1.赋执行权限 2.bash + 文件名
#!/bin/bash 告诉系统使用的解释器
变量
自定义变量:sehll中只有字符一种数据类型
使用变量时加美元符号
位置变量: 命令行参数
$0 $1
预定义变量:系统定义好的
$? 前一个命令的退出状态
环境变量:env查看
4.shell功能语句
#表示注释
read
read val :从终端读取输入到变量val中
read -p 字符串 val :添加输入提示
-t 秒数 规定输入时间
-n 数字 规定最多输入字数
-s 隐藏输入内容
test
真为0 假为1
字符串测试: test 字符串1 = 字符串2 是否相等
!= 是否不相等
-z 字符串 长度是否为0
-n 是否不为0
整数测试:test a -eq b 判断a、b是否相等
-gt a是否大于b
文件测试:test -d name name是否为目录
-f 是否为普通文件
expr
算术运算 \* 乘 **次方
变量赋值:val=`expr 运算`
val=$[运算]
val=$((运算))
val=$[2**3] 2的3次方
5.shell控制语句
条件控制:
if 表达式
then
需要执行的语句
fi
表达式:1.test 2.[判断] 每个变量必须相隔,相当与将test变为[]
-a:与 -o:或 !:非
if...then...elif...then...else fi
多路分支:
case 变量 in
模式1)
命令列表
;;
模式2|模式3)
命令列表
;;
.
.
.
*) //都没有就执行这个
命令列表
;;
esac
循环控制:
for () in ()
do
命令列表
done
for((;;))
do
命令列表
done
while 表达式(ture死循环)
do
命令列表
done
let i++ 自增
break n 跳出n层循环
总结:判断-- [ val1 = val2 ] 注意空格
赋值-- val=$[$val+3] 注意使用$