编写脚本 添加注释,和文本
运行脚本
变量不需要声明,初始化不需要指定类型,变量可以动态转换
变量命名:
1:只能使用数字,字母和下划线,且不能以数字开头2:变量名区分大小写3:建议变量的名称要通俗易懂赋值:变量赋值是通过等号(=)进行赋值,在变量、等号和值之间不能出现空格。
输出:加上$变量名,也可以使用 ${变量名}
编写脚本 加上{}后面可以接着给值
运行脚本 echo $x echo &{x}这是一个变量 修改变量,不能 ${x}=xx 只能采取以新的变量重新赋值
在/etc/profile中自定义的变量,在哪里都能使用
可以看到以字符串输出,并没有输出变量的值,要想输出变量的值,需加上个引用$
单引号:内容按原字符串进行输出 不能使用转义符双引号:可以引用变量 可以使用转义符没引号:可以引用变量 可以使用转义符 单引号报错 更改
格式:${变量名:开始位置:截取长度}
会生成一个新的字符串,不会在原字符串上发生修改
#:从头开始删除(匹配第一个) 格式:${变量名#条件} 例如:${str#*,}:删除第一个逗号之前包括逗号的所有内容 ##:从头开始删除(匹配最后一个) 格式:${变量名##条件} 例如:${str##*,}:删除最后一个逗号之前包括逗号的所有内容 %:从尾开始删除(匹配第一个) 格式:${变量名%条件} 例如:${str%,*}:删除第一个逗号之前包括逗号的所有内容 %%:从尾开始删除(匹配最后一个) 格式:${变量名%%条件} 例如:${str%%,*}:删除最后一个逗号之前包括逗号的所有内容
存储多个元素
格式:变量名=(元素1 元素2....元素n) 操作:${变量名[下标]} 注意:${list}直接输出变量名,结果就是下标为0的值 ${list[*]} 获取所有的元素 获取个数: ${#变量名[*]}引用数组,如果不指定下标,默认输出小标为零的元素
算术运算符 注意表达式中各数和运算符之间要加空格隔开
方式1:通过expr这个表达式计算工具 格式:`expr 表达式` 注意:表达式中运算符两变需要加空格 方式2:通过[] 格式:$[表达式]支持加减除,不支持* 支持加减乘除 比较运算符:
格式:[值1 符号 值2] 注意:使用[]时,符号两端加不加空格都行,[]两端加不加都行,不能使用字母(-gt) 比较等于时,使用== 直接引用结果 0表示false 1表示true判断方法一
判断方法二 判断方法三 判断方法四
格式1:if 判断条件 then 执行语句 fi 格式2: if 判断条件 then 执行语句 else 执行语句 fi 格式3: if 判断条件 then 执行语句 elif 判断条件 then 执行语句 fi 如果有两个判断条件 格式:((判断条件 & 判断条件)) ((((判断条件)) & ((判断条件))))格式1:read 变量 格式2:read 变量1 变量2 注意:使用格式2时,键盘录入的需要以空格进行切分 echo输出默认换行,不换行写法 echo -n 输出结果
案例:求1到100的奇数和和偶数和
{开始..结束}:表示开始位置到结束位置所有的数字
注意: 累加的操作:osum=`expr ${i} + ${osum}` osum=$[${i}+${osum}] let osum+=i 使用let之后 在引用变量进行计算时,不需要在使用$,+=是进行计算不再是拼接
案例:打印5*5的三角形
带参函数,在函数名后面传参,有返回值,只接受一次 带参函数,在执行脚本后面传参 无参无返回值
加减日期时间 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" //显示下一年的日期
当前目录下有一个文件,文件中的内容为hello 默认将正确信息写入新文件中 要想错误的写入,需加个2
>和>>的区别,>> 是追加 > 是覆盖想把错误的和正确的都写入 直接将字符串追加到文件中
创建定时任务:crontab -e 执行该指令会打开一个文件,在该文件中写定时任务 注意里面的文件要加绝对路径 前面为定时的时间
第一个* 代表分钟 取值范围0~59 第二个* 代表小时 取值范围0~23 第三个* 代表日期 取值范围1~31 第四个* 代表月份 取值范围1~12 第五个* 代表星期几 取值范围0~6 代表星期日 * * * * * 默认为一分钟执行一次 */5* * * * 每5分钟执行一次 0 * * * *分钟每到零的时候执行一次,即每小时执行一次 0 0 * * *每个0点0分执行一次,即每天执行一次 0 0 * * 0每周执行一次 0 0 1 * *每月执行一次 ===================================== 0 */2 * * * 每两小时执行一次 0 23-7/2,8 * * * 晚上11点到早上8点,每两小时执行一次 0 11 * * 1-3星期一到星期三的11点执行一次查看定时任务的日志: tail -f /var/log/cron
演示 由于定时执行的命令可能会很长,此处可以编写shell脚本,直接在定时器中加上运行脚本的指令就可 创建一个脚本
将脚本写入定时器,实现每分钟执行一次
查看定时器日志 可以看到每隔一分钟多了一条日志 查看data看看定时任务有没有执行成功
注意:定时器的任务,不用的要及时清了,或者注释掉,或者每次都会执行,直至磁盘写满
清除后再查看日志,可以看到日志不再执行定时任务
java java入门基础学习(一) java入门基础学习(二) java入门基础学习(三) java入门基础学习(四) java入门基础学习(五) java入门基础学习(六) java入门基础学习(七) java入门基础学习(八) java入门基础学习(九) java入门基础学习(十) java入门基础学习(十一) java入门基础学习(十二) java入门基础学习(十三) java入门基础学习(十四)Maven Git java总结,题目+笔记 java进阶之常见对象(一) java进阶之常见对象(二) java进阶之冒泡排序 java进阶之选择排序 java进阶之面向对象(封装) java进阶之面向对象(代码块、继承) java进阶之面向对象(多态、抽象、接口) java进阶之匿名内部类、访问修饰符、包 java进阶之io流(字节流,字符流) java应用一(反射的应用) java应用二(配置文件、工具类) java应用三(数据库索引、spring) java应用四(连接池) Linux Linux基础一 Linux基础二 Linux基础三 Linux基础四 Mysql mysql一 mysql二 mysql三 mysql四 java连接数据库 redis redis一(缓存,redis简介) redis二(单节点安装,桌面插件) redis三(指令的使用) redis四(java与redis的连接,基本指令在java中的操作) redis五(练习) redis七(持久化) redis九(集群安装) Hadoop hadoop学习一 hadoop学习二 hadoop学习三 hadoop学习四 hadoop学习五 hadoop学习六 hadoop学习七 hadoop学习八 hadoop异常处理 hadoop基础学习九 hadoop基础学习十 hadoop基础学习十一 hadoop基础学习十四 hadoop基础学习十五