shell脚本
因为linux无法同时进行多个指令,所有通过shell作为桥梁(后缀为sh的文件)
头部注释为#!/bin/sh或者#!/bin/bash(注释可写可不写,建议写上)
可以通过sh或者bash命名来执行 ./文件名.sh(必须在当前目录下且文件是可执行文件)
变量(动态数据类型,没有数据类型的限制,并且必须初始化)
只有一个数据类型String,整数其实也是字符串 (所有等号后面可以加引号也可以不加)
(等号两边不能有空格) 输出20sdsfsf
${变量} ${}表示值引用{}之中的内容分,对相连的内容做了一个区分(后面字符串的拼接截取等等)
$0...$n:表示接收外部参数(执行脚本时,传递的参数)
$0永远表示脚本名称(所以脚本名称不算数,$0也不算第一个参数)
下标大于一位数只能使用${}获取参数,因为$下标只把第一位数据看做下标
$*获取所有参数
$#获取所有参数个数
$10 是$1 和 0 的拼接
获取长度: ${#变量}
截取: ${变量:开始位置:长度} ${str::5}:从0获取5个 ${str:0}:从0获取到末尾
替换: ${变量/旧/新} 替换所有:${变量//旧/新}
删除:
从头开始删除
${变量#表达式}:匹配第一个删除
${变量##表达式}:匹配最后一个删除
从尾开始删除
${变量%表达式}:匹配第一个删除
${变量%%表达式}:匹配最后一个删除
注意:从未开始删除,表达式还是从左向右去写 删除不会再原字符上进行修改,想要修改原字符串只能从新赋值
算数运算符
bash不支持简单的数学运算,可以通过命令实现expr(只 支持整数)
$[值+值] `expr 值 + 值` 注意:符号两边需要加上空格,使用乘*需要加 \ 来转义
比较运算符: > < >= <=....
$[值符号值](符号两边空格加不加无所谓) 结果true(1)和false(0)
逻辑运算符: &/and |/or !/not
if
if 判断条件
then
判断为true执行的代码
elif 判断条件
then
判断为true执行的代码
。。。
else
判断为false执行的代码
fi
注意:else可加可不加
判断条件的写法
[]:[]两边加空格,符号两边加空格并且符号前加转义符
可以使用字母
[[]]:[[]]两边加空格,符号两边加空格
可以使用字母
():弃用
(()):不需要加空格,但是不能使用字母
在使用变量时,不需要使用$
right
for:
java格式:
for ((初始化变量;判断条件;控制语句)) 两个括号
do
执行语句
done
使用let在计算时可以直接使用变量
python格式:
for 变量 in 结果集
do
执行语句
done
结果集:
{开始..结束}含头含尾,不能引用变量
`seq 开始 结束`含头含尾
数组:存储多个元素,数据类型可以不同,元素元素之间以空格切分
${数组[下标]} 直接引用数组变量,默认获取下标为0的元素下标使用*表示获取所有
获取长度: ${#数组[*]}
read:键盘录入:read 变量1 变量2 ...变量n
键盘录入时,允许给多个变量进行赋值,值和值之间以空格切分
获取当前日期时间:date空格+"%Y-%m-%d %H:%M:%S"
格式化日期时间:date -d today +"%Y-%m-%d %H:%M:%S"
加减日期时间:
date +%Y%m%d //显示前天年月日
date +%Y%m%d --date="+1 day" //显示前一天的日期
date +%Y%m%d --date="-1 day" //显示后一天的日期
date +%Y%m%d --date="-1 month" //显示上一月的日期
date +%Y%m%d --date="+1 month" //显示下一月的日期
date +%Y%m%d --date="-1 year" //显示前一年的日期
date +%Y%m%d --date="+1 year" //显示下一年的日期
重定向:
标准输入文件(stdin):stdin的文件描述符为0,默认从stdin读取数据。
标准输出文件(stdout):stdout 的文件描述符为1,默认向stdout输出数据。
标准错误文件(stderr):stderr的文件描述符为2,向stderr流中写入错误信息。
使用>,>>默认是把正确信息写入文件
想要把错误信息和正确信息写入文件需要后面追加2>&1(把错误信息当做正确信息去处理)
定时器:格式:*(分钟) *(小时) *(星期) *(几号) *(月份) commend
通过crontab -e添加定时任务(会进入编辑模式) 要给全部路径
查看定时任务是否执行了,看日志tail -f /var/log/cron
* * * * * 每分钟 */1 * * * * 每分钟 0 */1 * * * 每小时