Log() {

    LogFile=/tmp/`basename $`.log
LogDate=$(date +"%F %T")
echo -e "\n\n||| ${LogDate} ||| : $1 =====|||===== \n" >> $LogFile
} Software_Pre() { #查找安装包是否在当前目录下
## install Plug-in Funcation
[ -d $TmpSoft ] || mkdir -p $TmpSoft #判断$TmpSoft是否存在,是否为目录,若不存在或者不是目录,则创建$TmpSoft目录
if [ -f $Home/software/$ ];then #判断$Home/software/$1是否为常规文件,$Home取变量值,在此脚本中Home=$(cd `dirname $0`;pwd),是当前脚本的目录 Log "$Home/software/$1 Prepare --------------->"
              #/dev/null 相当于linux中的垃圾回收站,可以将不想要的标准输出丢弃
if echo $Home/software/$|egrep "(.tar|.tgz)" &> /dev/null;then #判断software中的文件是.tar还是.tgz
tar xzvf $Home/software/$ -C $TmpSoft >& > /dev/null|tee -a $LogFile #解压安装包,tee -a从标准输入设备读取数据,
               #将其内容输出到标准输出设备,同时保存为文件,"2>&1 > /dev/null | tee -a $LogFile"的意思是丢弃标准输出,把错误输出保存在$TmpSoft文件
Log "tar xzvf $Home/software/$1 -C $TmpSoft Complete"
elif echo $Home/software/$|egrep "(.zip)" &> /dev/null;then #判断software中的文件是否为.zip类型的
unzip -o $Home/software/$ -d $TmpSoft >& > /dev/null|tee -a $LogFile
Log "unzip -o $Home/software/$1 -d $TmpSoft Complete"
else
GreenChar "Unknown File Type $1" >& | tee -a $LogFile #未知文件类型
fi
Log "$Home/software/$1 Prepare <---------------" elif [ -f $TmpSoft/$ ];then
#查找安装包是否在临时目录下
Log "$TmpSoft/$1 Prepare --------------->"
if echo $TmpSoft/$|egrep "(.tar|.tgz)" &> /dev/null;then
tar xzvf $TmpSoft/$ -C $TmpSoft >& > /dev/null|tee -a $LogFile
Log "tar xzvf $TmpSoft/$1 -C $TmpSoft Complete"
elif echo $TmpSoft/$|egrep "(.zip)" &> /dev/null;then
unzip -o $TmpSoft/$ -d $TmpSoft >& > /dev/null|tee -a $LogFile
Log "unzip -o $TmpSoft/$1 -d $TmpSoft Complete"
else
GreenChar "Unknown File Type $1" >& | tee -a $LogFile
fi
Log "$TmpSoft/$1 Prepare <---------------" else
#若不在当前目录也不再临时目录,在去网上下载安装包,此http地址可以是公司的安装包存储位置也可是私人包存放位置
Log "wget $1 Prepare --------------->"
wget http://static.example.com/software/$1 -P $TmpSoft 2>> $LogFile if [ -f $TmpSoft/$ ];then
if echo $TmpSoft/$|egrep "(.tar|.tgz)" &> /dev/null;then
tar xzvf $TmpSoft/$ -C $TmpSoft >& > /dev/null|tee -a $LogFile
Log "tar xzvf $TmpSoft/$1 -C $TmpSoft in wget Complete"
elif echo $TmpSoft/$|egrep "(.zip)" &> /dev/null;then
unzip -o $TmpSoft/$ -d $TmpSoft >& > /dev/null|tee -a $LogFile
Log "unzip -o $TmpSoft/$1 -d $TmpSoft in wget Complete"
else
GreenChar "Unknown File Type $1" >& | tee -a $LogFile
fi
else
RedChar "Unknown or Not find $1" >&|tee -a $LogFile #安装包未知或者没有发现,标记红色
RedBGChar "Please Manual Download $1" >&|tee -a $LogFile #请手动下载此安装包,标记红框
exit
fi Log "wget $1 Prepare <---------------"
fi [ $? -eq ] && GreenChar "<< $1 >> Software Prepare :" >&|tee -a $LogFile|| RedChar "<< $1 >> Software Prepare :" >&|tee -a $LogFile
#若上一步安装包寻找成功,则显示 installpack Software Prepare:标记为绿色
#若寻找失败,则显示 installpack Software Prepare:标记为红色
}

shell脚本判断安装包位置及类型的更多相关文章

  1. Shell脚本 判断

    #Linux系统Shell脚本判断变量文件目录:权限.是否存在.空值.相等 1.字符串判断 str1 = str2 当两个串有相同内容.长度时为真str1 != str2 当串str1和str2不等时 ...

  2. Linux shell脚本判断服务器网络是否可以上网

    Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需要有个函数来判断服务器网络状态 我们可以通过curl来访问 www ...

  3. shell 脚本——判断条件

    在之前的shell语言学习笔记中已经写过shell的几种判断语句及循环语句,也简单的介绍了shell语言判断语句和判断条件.在此再做进一步学习. test命令的测试功能 test命令用于检测系统文件及 ...

  4. shell脚本编写规范和相关变量类型

    shell编程规范与变量    一.shell脚本概述    ① 什么是shell? Linux中有哪些shell?    ② shell的作用   ③ 用户的登录shell    ④ shell脚本 ...

  5. 编写SHELL脚本--判断用户的参数

    测试语句格式: [ 条件表达式 ] 常见的几种形式: [ -d /etc ]  判断/etc是不是一个目录类型, [ -e /etc/php.ini ] 判断/etc/php.ini 文件是否存在 [ ...

  6. shell脚本判断文件类型

    转自:http://www.cnblogs.com/sunyubo/archive/2011/10/17/2282047.html 1. shell判断文件,目录是否存在或者具有权限 2. #!/bi ...

  7. shell脚本判断语句和循环语句

    if判断语句 exit跳出判读语句 不加exit的结果 read -n(不换行) 判断是否输入的是数字 read age[[ $age =~ ^[0-9]+$ ]]if [ $? -ne 0 ]; t ...

  8. 【原】Shell脚本-判断文件有无进而复制

    2016年7月5日某同学在群上求助要编一个判断文件或目录在某路径下有无进而有的就复制粘贴到另一路径下,无的则将代码中断(不往下执行命令)的脚本.逐一完善.模板如下(生产环境可用到路径环境变量) --- ...

  9. shell脚本判断执行用户

    在脚本中,判断执行者是否为root. 判断方法1, #!/bin/bash if [ `whoami` != "root" ];then echo " only root ...

随机推荐

  1. JSR107缓存规范

    Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry 和 Expiry. CachingProvider定义了创建. ...

  2. 《R语言入门与实践》第六章:R 的环境系统

    前言 这一章在对象的基础之上,讲解了对象所处的环境,进一步讲了环境对对象的作用,以及如何使用环境.结构如下: 环境的定义和操作 环境的规则 制作闭包 环境 R 环境的定义 在 R 中,每一个数据对象都 ...

  3. docker使用笔记

    项目部署时用到了docker,以下分享了我在实践中使用的指令,和对docker一些个人的理解(※和字体加重部分) 本文选择使用网易的镜像源:https://c.163.com/hub#/m/home/ ...

  4. fetch请求get方式以及post提交参数为formdata类型的数据

    1.请求方式post,请求函数参数 _requestData(callback,_cityDt){ const switchIp = "http://192.168.43.103/api/p ...

  5. python3 doc2vec文本聚类实现

    import sys #doc2vev import gensim import sklearn import numpy as np from gensim.models.doc2vec impor ...

  6. linux 7 关闭防火墙 开启sshd服务

    启动一个服务:systemctl start firewalld.service关闭一个服务:systemctl stop firewalld.service重启一个服务:systemctl rest ...

  7. python--多线程多进程

    一.进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程.进程是很多资源 ...

  8. swarm 使用整理

    swarm 是 docker 公司弄的 docker 集群管理工具.  整理使用实践如下. 1. 准备 3 台实例机   ip 地址分别是 192.168.0.131    ~   1332. 在三台 ...

  9. wifi rate vs mode

  10. Qt 比对TreeItem节点

    void TreeModel::settingsUpdate(const QStringList &lines){ QList<TreeItem*> parents; TreeIt ...