shell脚本测试变量是否为空,测试文件是否存在,sed修改配置文件参数,分支语句
Shell脚本
1. 基本的几个变量
- 使用$?获取最近一次的执行结果;
- 使用$#获取传递的参数个数,类似C语言中的int argc;
- 使用$@获取所有的传参,类似C语言的char **argv
2. 获取一个命令的结果是否为空
场景:在某个目录查找是否包含某个文件
一般使用双引号("")将变量括起来。将多个变量化为一个字符串,否则测试时可能会有warning
#########################################################################
# File Name: common_usages.sh
# Author: Toney Sun
# mail: vip_13031075266@163.com
# Created Time: 2020年04月20日 星期一 15时03分23秒
#########################################################################
#!/bin/bash
<<AAA
获取一个命令的结果是否为空
例如:
在某个目录查找是否包含某个文件
一般使用双引号("")将变量括起来。将多个变量化为一个字符串,否则测试时可能会有warning
AAA
isNull(){
local result
DIR="/mnt/hgfs/em嵌入式学习记录/shell/"
#result=`ls | grep shell.txt`
result=`ls ../`
#echo "${result}"
#./common_uages.sh: line 21: [: too many arguments
if [ -z "$result" ];
then
echo "Can't find shell.txt in $PWD !!!"
else
echo "shell.txt is in current path."
fi
#上述命令可以简化为下面的方式:
[ -z "$result" ] && echo "Can't find shell.txt" || echo "shell.txt is in current path."
}
3. 检测文件系统中是否存在某个文件
场景: 需要解压缩一个tar包,首先得确认tar包存在;
#########################################################################
# File Name: common_usages.sh
# Author: Toney Sun
# mail: vip_13031075266@163.com
# Created Time: 2020年04月20日 星期一 15时03分23秒
#########################################################################
#!/bin/bash
<<BBB
检测文件系统中是否存在某个文件
例如:
需要解压缩一个tar包,首先得确认tar包存在;
BBB
isFileExist(){
FILE="linux-2.6.24.tar.bz2"
[ -e $FILE ] && echo "$FILE is exist." || echo "$FILE is not exist!!!"
DST_PATH="/tmp/linux2.6.24"
#如果想要解压到”/tmp/linux-2.6.24目录“,那么我们首先需要检测该目录是否存在
#如果存在,删除该目录下的所有内容;如果不存在则创建该目录
[ ! -e ${DST_PATH} ] && echo "${DST_PATH} not exist..."
[ -e ${DST_PATH} ] && rm -f ${DST_PATH}/* || mkdir ${DST_PATH}
}
3. 使用sed命令修改一整行内容
场景: 修改配置文件的值
#########################################################################
# File Name: common_usages.sh
# Author: Toney Sun
# mail: vip_13031075266@163.com
# Created Time: 2020年04月20日 星期一 15时03分23秒
#########################################################################
#!/bin/bash
<<CCC
使用sed命令修改一整行内容
例如:
修改配置文件的值
CCC
modifyConfig(){
FILE="common_usage.log"
version="linux-4.1.23"
#正常的做法-->不可行
#以”REVISION=“开始的行全部替换为”REVISION=$version“
#sed -i 's/REVISION=.*$/REVISION=$version/' $FILE
#可行办法
sed -i "s/REVISION=.*$/REVISION=$version/" $FILE
}
3. 检测文件系统中是否存在某个文件
场景: 需要解压缩一个tar包,首先得确认tar包存在;
#########################################################################
# File Name: common_usages.sh
# Author: Toney Sun
# mail: vip_13031075266@163.com
# Created Time: 2020年04月20日 星期一 15时03分23秒
#########################################################################
#!/bin/bash
<<BBB
检测文件系统中是否存在某个文件
例如:
需要解压缩一个tar包,首先得确认tar包存在;
BBB
isFileExist(){
FILE="linux-2.6.24.tar.bz2"
[ -e $FILE ] && echo "$FILE is exist." || echo "$FILE is not exist!!!"
DST_PATH="/tmp/linux2.6.24"
#如果想要解压到”/tmp/linux-2.6.24目录“,那么我们首先需要检测该目录是否存在
#如果存在,删除该目录下的所有内容;如果不存在则创建该目录
[ ! -e ${DST_PATH} ] && echo "${DST_PATH} not exist..."
[ -e ${DST_PATH} ] && rm -f ${DST_PATH}/* || mkdir ${DST_PATH}
}
4. shell脚本中的分支语句
场景: 根据不同的参数执行不同的操作;获取函数返回值
#########################################################################
# File Name: common_usages.sh
# Author: Toney Sun
# mail: vip_13031075266@163.com
# Created Time: 2020年04月20日 星期一 15时03分23秒
#########################################################################
#!/bin/bash
condition(){
if [ $# -eq 1 ];
then
case "$1" in
clean)
echo "make clean..."
return 0
;;
all.clean)
echo "make all.clean..."
return 0
;;
*)
echo "make default..."
return 1
;;
esac
elif [ $# -eq 2 ];
then
echo "Two parameters...."
return 1
else
cat <<-USAGE
Usage: $0 [clean|clean.all] [para1 para2]
USAGE
fi
}
condition asdf
[ $? -eq 0 ] && echo "return sucess!!!" || echo "failed!!!"
shell脚本测试变量是否为空,测试文件是否存在,sed修改配置文件参数,分支语句的更多相关文章
- shell脚本,如何监控目录下的文件内容是否被修改。
第一种方法是通过cmp来进行比对[root@localhost bo]# ls .html .html .html .html .html .html .html .html .html cat.sh ...
- shell脚本特殊变量与变量子串相关知识
一.shell脚本特殊变量 1.shell中常用特殊位置变量说明: $0 获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包含了脚本路径 $n 获取当前执行的shell脚本的第n个 ...
- shell脚本-高级变量
shell脚本-高级变量 字符串变量切片 ${#var}: 返回字符串变量var的长度 ${var:offset}: 返回字符串变量var中从第offset个字符后(不包括第offset 个字符)的字 ...
- shell脚本监控Flume输出到HDFS上文件合法性
在使用flume中发现由于网络.HDFS等其它原因,使得经过Flume收集到HDFS上得日志有一些异常,表现为: 1.有未关闭的文件:以tmp(默认)结尾的文件.加入存到HDFS上得文件应该是gz压缩 ...
- Linux shell 脚本攻略之比较与测试
摘自:<Linux shell 脚本攻略>Page30-33
- shell脚本学习-变量
跟着RUNOOB网站的教程学习的笔记 shell变量 shell变量的命名 定义变量时,变量名不加美元符号($,PHP语言中需要),如: name="runoob" 注意,变量名与 ...
- shell脚本:变量,文件判断,逻辑运算等纪要
shell脚本中的变量定义,引用各有不同的方式,除此之外,很常用的有文件属性判断,逻辑运算,数值运算等,下面记录一下它们的属性作用 变量 shell变量的定义分为两种:一种是直接赋值定义,另一种是嵌套 ...
- shell脚本1——变量 $、read、``
与Shell变量相关的几个命令: 变量只在当前Shell中生效. source 这个命令让脚本影响他们父Shell的环境(. 可以代替source命令) export 这个命令可以让脚本影响其子She ...
- shell判断一个变量是否为空方法总结
shell中如何判断一个变量是否为空 shell编程中,对参数的错误检查项中,包含了变量是否赋值(即一个变量是否为空),判断变量为空方法如下: 1.变量通过" "引号引起来 1 2 ...
随机推荐
- Spring Cloud分区发布实践(3) 网关和负载均衡
注意: 因为涉及到配置测试切换, 中间环节需按此文章操作体验, 代码仓库里面的只有最后一步的代码 准备好了微服务, 那我们就来看看网关+负载均衡如何一起工作 新建一个模块hello-gateway, ...
- fastboot刷机小脚本
在Windows系统下,一般刷机命令是在cmd路径下执行如下命令: 1.adb reboot bootloader2.fastboot flash boot +boot路径3.fastboot fla ...
- Convert a Private Project on bitbucket.com to a github Public Project
Create a public repo on github, you can add README or License files on the master branch, suppose th ...
- Python断言及常用断言函数总结
Python断言 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Python 解释器会报 As ...
- sqlplus登录用户被锁问题
oracle有三个默认的用户名和密码: 1.用户名:sys密码:change_on_install 2.用户名:system密码:manager 3.用户名:scott密码:tiger 当登录用户 ...
- miniFTP项目集合
项目简介 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务进 ...
- Python小白的数学建模课-18.最小生成树问题
最小生成树(MST)是图论中的基本问题,具有广泛的实际应用,在数学建模中也经常出现. 路线设计.道路规划.官网布局.公交路线.网络设计,都可以转化为最小生成树问题,如要求总线路长度最短.材料最少.成本 ...
- SQL 练习21
查询每门课程被选修的学生数 SELECT cid,COUNT(cid) 选修人数 from sc GROUP BY cid
- idea中的springboot的maven项目报错Failed to clean project: Failed to delete D:\new_shunyi\shunyi\target\shunyi\WEB-INF\classes\static\
正准备打包上传到测试环境,本想先clean下,没想到报了个这个错,意思大概是无法删除target下的某个文件,没有权限(一脸懵逼): 后来百度发现可能是因为我之前启动了tomcat,未关闭,然后关闭了 ...
- 配置之XML--读取XML文件 转存为Key-Value
将XML文件读取 绑定数据至Dictionary Eg: Xml文件 <?xml version="1.0" encoding="utf-8" ?> ...