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. Netty 源码分析系列(二)Netty 架构设计

    前言 上一篇文章,我们对 Netty做了一个基本的概述,知道什么是Netty以及Netty的简单应用. Netty 源码分析系列(一)Netty 概述 本篇文章我们就来说说Netty的架构设计,解密高 ...

  2. Java面向对象05——创建对象内存分析

  3. 文件上传之WAF绕过及相安全防护

    文件上传在数据包中可修改的地方 Content-Disposition:一般可更改 name:表单参数值,不能更改 filename:文件名,可以更改 Content-Type:文件 MIME,视情况 ...

  4. Quartz 实现同一辅助类 重复开启多任务

    前言: 最近做一个项目,需要用到定时任务,第一就想到了Quartz,然后很开心的就实现了功能,但是后来发现一个问题,如果需要开启多个定时任务,需要写多个辅助类,而辅助类里面的功能基本差不多,这是我就想 ...

  5. Maven 手动安装JAR包到本地maven仓库后,但在项目中依旧报错找不到JAR包解决方法

    本博客包含的内容: ①手动安装jar包到本地仓库: ②解决Missing artifact org.source.fastdfs:fastdfs:jar问题 .personSunflowerP { b ...

  6. shell——sed编辑器

    目录 一.sed编辑器 1.1.sed编辑器工作流程 读取: 执行: 显示: 1.2.格式 1.3.常用选项 1.4.常用操作 1.5.替换 一.sed编辑器 sed是一种流编辑器,流编辑器会在编辑器 ...

  7. AI+云原生,把卫星遥感虐的死去活来

    摘要:遥感影像,作为地球自拍照,能够从更广阔的视角,为人们提供更多维度的辅助信息,来帮助人类感知自然资源.农林水利.交通灾害等多领域信息. 本文分享自华为云社区<AI+云原生,把卫星遥感虐的死去 ...

  8. Shell-11-read命令

    read read命令从标准输入读取,并且把输入的内容赋值给变量 参数 示例 1 2 3 while 4 分别赋值变量

  9. 【大咖直播】Elastic Security 安全管理实战工作坊

    本次实战课程,旨在用 Elastic Security 来武装每一位安全运维人员,从容预防.检测和应对网络威胁.这款免费开放的解决方案提供了 SIEM.端点安全.威胁狩猎.云监控.恶意软件保护等功能. ...

  10. 博客CSS样式 二

    预览 可自行更改颜色 背景图 页面定制 CSS 代码中加入: url为背景图地址,可下载心仪背景图后上传到博客园相册后获取地址 body { color: #000; background: url( ...