今天学到了shell脚本编写,看了视频挺简单的,真到自己操作了,就一大堆问题
首先文件后缀名要标记sh,脚本开头要使用#!/bin/bash,如果是别的shell后面的bash要换,
在开始编写脚本之前先要对该文件进行批注示意,一般写明该脚本编写的目的,编写日期作者
还要注明环境变量的宣告,
在编写过程中使用echo要用一些特殊转义符
例题:利用date进行文件的建立,想要把每天数据备份成不同的数据文件,然后该例题就是简单让创建文件,文件名类似这种:backup.2019-08-19.data。
编写脚本:首先名字这块用read命令-p后面跟提示语,
然后是用date变量,date="$date +%Y%m%d",
然后再用file把两个字符合起来,file=${name}.${date}即可
数值计算
使用变量=$(($变量1*$变量2))即可,里面的括号是运算式子,不一定就是两个变量相乘,可以是相除,甚至还余2都行,要用括号括起来
善用判断式
$?,上个命令的返回值,若为0,则执行成功,若不为0,则出错
test命令
标志及其意义:
- 对文件类型的判断
-e,该文件是否存在
-f,该文件是否存在且有数据
-d,该文件名是否存在且为目录
2.文件权限检测
-rwxugk,读写执行SUIDSGIDSBIT的权限
-s,检查该文件是否存在且为非空白文件
3.两个文件的比较
-nt,前比后新
-ot,前比后旧
-ef,两个文件是否是同一个文件
4.两个整数的比较
-eq,相等
-ne,不等
-gt,前大于后
-lt,前小于后
-ge,前大于等于后
-le,前小于等于后
5.判定字符串
-z,后接字符串,判断字符串是否为0,;如果后面是空字符串,结果为真
-n,后接字符串,判断字符串是否非0;如果后面是空字符串,结果为假
test tr1 = tr2,若相等,回传true
test tr1 != tr2,若相等,则回传false
6.多重条件判定
-a,表示and,前接判定,后接判定,都为真即真,例如,test -r file -a -x file,同时判定文件是否有可读和可执行权限
-o,表示或者,两者有其一成立即可
!,反相状态,test ! -x file,当file不具有可执行权限时,回传true
简单例题1:让使用者输入完整文件名,我们来判断:
1.若不存在,则提示不存在且中断程序
2.若存在,则判断是普通文件还是目录
3.输出该文件权限数据
解答:
在第一步中,要注意test -e的使用和!反相的配合,第二步没啥毛病,第三步要注意使用数值计算,上面说明了这里不说明
简单例题2:
1.执行一个程序时,让使用者输入Y或N
2.如果用户输入Y或y,显示OK,continue
3.如果用户输入n或N,显示Oh,interrupt!
4.如果不是这四个字符,显示 I dont know what u said
代码短短四行,被我写复杂了,就是按照上面要求写就行了