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修改配置文件参数,分支语句的更多相关文章

  1. shell脚本,如何监控目录下的文件内容是否被修改。

    第一种方法是通过cmp来进行比对[root@localhost bo]# ls .html .html .html .html .html .html .html .html .html cat.sh ...

  2. shell脚本特殊变量与变量子串相关知识

    一.shell脚本特殊变量 1.shell中常用特殊位置变量说明: $0 获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包含了脚本路径 $n 获取当前执行的shell脚本的第n个 ...

  3. shell脚本-高级变量

    shell脚本-高级变量 字符串变量切片 ${#var}: 返回字符串变量var的长度 ${var:offset}: 返回字符串变量var中从第offset个字符后(不包括第offset 个字符)的字 ...

  4. shell脚本监控Flume输出到HDFS上文件合法性

    在使用flume中发现由于网络.HDFS等其它原因,使得经过Flume收集到HDFS上得日志有一些异常,表现为: 1.有未关闭的文件:以tmp(默认)结尾的文件.加入存到HDFS上得文件应该是gz压缩 ...

  5. Linux shell 脚本攻略之比较与测试

    摘自:<Linux shell 脚本攻略>Page30-33

  6. shell脚本学习-变量

    跟着RUNOOB网站的教程学习的笔记 shell变量 shell变量的命名 定义变量时,变量名不加美元符号($,PHP语言中需要),如: name="runoob" 注意,变量名与 ...

  7. shell脚本:变量,文件判断,逻辑运算等纪要

    shell脚本中的变量定义,引用各有不同的方式,除此之外,很常用的有文件属性判断,逻辑运算,数值运算等,下面记录一下它们的属性作用 变量 shell变量的定义分为两种:一种是直接赋值定义,另一种是嵌套 ...

  8. shell脚本1——变量 $、read、``

    与Shell变量相关的几个命令: 变量只在当前Shell中生效. source 这个命令让脚本影响他们父Shell的环境(. 可以代替source命令) export 这个命令可以让脚本影响其子She ...

  9. shell判断一个变量是否为空方法总结

    shell中如何判断一个变量是否为空 shell编程中,对参数的错误检查项中,包含了变量是否赋值(即一个变量是否为空),判断变量为空方法如下: 1.变量通过" "引号引起来 1 2 ...

随机推荐

  1. Spring Cloud分区发布实践(3) 网关和负载均衡

    注意: 因为涉及到配置测试切换, 中间环节需按此文章操作体验, 代码仓库里面的只有最后一步的代码 准备好了微服务, 那我们就来看看网关+负载均衡如何一起工作 新建一个模块hello-gateway, ...

  2. fastboot刷机小脚本

    在Windows系统下,一般刷机命令是在cmd路径下执行如下命令: 1.adb reboot bootloader2.fastboot flash boot +boot路径3.fastboot fla ...

  3. 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 ...

  4. Python断言及常用断言函数总结

    Python断言 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Python 解释器会报 As ...

  5. sqlplus登录用户被锁问题

    oracle有三个默认的用户名和密码: 1.用户名:sys密码:change_on_install 2.用户名:system密码:manager 3.用户名:scott密码:tiger   当登录用户 ...

  6. miniFTP项目集合

    项目简介 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务进 ...

  7. Python小白的数学建模课-18.最小生成树问题

    最小生成树(MST)是图论中的基本问题,具有广泛的实际应用,在数学建模中也经常出现. 路线设计.道路规划.官网布局.公交路线.网络设计,都可以转化为最小生成树问题,如要求总线路长度最短.材料最少.成本 ...

  8. SQL 练习21

    查询每门课程被选修的学生数 SELECT cid,COUNT(cid) 选修人数 from sc GROUP BY cid

  9. idea中的springboot的maven项目报错Failed to clean project: Failed to delete D:\new_shunyi\shunyi\target\shunyi\WEB-INF\classes\static\

    正准备打包上传到测试环境,本想先clean下,没想到报了个这个错,意思大概是无法删除target下的某个文件,没有权限(一脸懵逼): 后来百度发现可能是因为我之前启动了tomcat,未关闭,然后关闭了 ...

  10. 配置之XML--读取XML文件 转存为Key-Value

    将XML文件读取 绑定数据至Dictionary Eg: Xml文件 <?xml version="1.0" encoding="utf-8" ?> ...