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. 解决移动端在IOS中input输入框光标过长

    在输入框样式中加入: line-height:20px;

  2. 漏洞分析:CVE 2021-3156

    漏洞分析:CVE 2021-3156 漏洞简述 漏洞名称:sudo堆溢出本地提权 漏洞编号:CVE-2021-3156 漏洞类型:堆溢出 漏洞影响:本地提权 利用难度:较高 基础权限:需要普通用户权限 ...

  3. bugku-web3

    这道题涉及的是HTML解码的问题,很简单,注意 HTML编码的格式 进入题目给出的网址,我们一直点击会一直循环跳动 勾选上阻止此页面创建更多对话框一栏,进去之后是空白的页面,查看源码. 这是一段HTM ...

  4. CVE-2021-3156 复现

    测试环境 OS: Ubuntu 18.04.5 LTS GCC: gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04) Make: GNU Make 4.1 ...

  5. OpenStack虚拟网络与物理网络的衔接(flat方式)

    by 无若 这边以CentOS7+Liberty版本为例. 过去一段时间(Juno版本之前版本),OpenStack内的虚拟网络与真正的物理网络衔接主要使用openvswitch,其主要问题是在配置网 ...

  6. 代码重构与单元测试——使用“以查询取代临时变量”再次对Statement()方法进行重构(七)

    代码重构与单元测试(一) 代码重构与单元测试--测试项目(二) 代码重构与单元测试--"提取方法"重构(三) 代码重构与单元测试--重构1的单元测试(四) 代码重构与单元测试--对 ...

  7. 一台服务器上部署多个Terracotta的方法

    在window server 2003 下,利用apache2.2.11+tomcat6+terracotta 群集不能复制session(http://forums.terracotta.org/f ...

  8. 慕慕生鲜上线&&腾讯云服务器配置准备

    1.购买服务器并配置环境 1.1 购买 618购买了腾讯云服务器三年最低配置(1核2G 1Mbps 50G云盘),一时激动忘记了购买前领优惠券,痛失25元. 1.2 环境配置 系统是 CentOS L ...

  9. Elasticsearch核心技术(二):Elasticsearch入门

    本文从基本概念.基本CRUD操作.倒排索引原理.分词等部分来初识Elasticsearch. 2.1 基本概念 Elasticsearch是面向文档(Document)的,文档是所有可搜索数据的最小单 ...

  10. Blazor+Dapr+K8s微服务之开发环境调试

    1         安装Dapr开发调试环境 1.1         Dapr 完整安装模式不支持开发调试 在上一篇随笔<Blazor+Dapr+K8s微服务之服务调用>中,我们通过为每个 ...