用于本地文件的Shell脚本

时间:2014-07-03 09:28:24

标签: linux bash shell freeswitch

我正在尝试在我的CentOS 6.5机器上安装freeSwitch。我按照https://confluence.freeswitch.org/display/FREESWITCH/CentOS+6给出的说明进行了操作。

执行make命令时,我在终端从 files.freeswitch.org 下载库时遇到超时问题。

如果我在浏览器中粘贴网址,我可以下载该文件。下载指令写在脚本文件中。

现在我想更改脚本,以便不是从url执行wget,而是应该从本地磁盘读取它。因为我是shell脚本的新手。我应该如何更改脚本以获得所需的结果。脚本的文件名是getlib.sh,脚本是

请帮忙

#!/bin/sh
##### -*- mode:shell-script; indent-tabs-mode:nil; sh-basic-offset:2 -*-

TAR=/bin/gtar
ZCAT=/bin/gunzip
BZIP=/usr/bin/bzip2
XZ=/usr/bin/xz
WGET=/usr/bin/wget
CURL=/usr/bin/curl

if [ -f "$WGET" ]; then
   DOWNLOAD_CMD=$WGET
elif [ -f "$CURL" ]; then
   DOWNLOAD_CMD="$CURL -O"
fi

if [ -n "`echo $1 | grep '://'`" ]; then
    base=$1/
    tarfile=$2
else
    base=http://files.freeswitch.org/downloads/libs/
    tarfile=$1
 fi

 uncompressed=`echo $tarfile | sed 's/\(\(\.tar\.gz\|\.tar\.bz2\|\.tar\.xz\)\|\(\.tgz\|\.tbz2\)\)$//'`

case `echo $tarfile | sed 's/^.*\.//'` in
     bz2|tbz2) UNZIPPER=$BZIP ;;
     xz) UNZIPPER=$XZ ;;
     gz|tgz|*) UNZIPPER=$ZCAT ;;
esac

if [ ! -d $tarfile ]; then
   if [ ! -f $tarfile ]; then
      rm -fr $uncompressed
      $DOWNLOAD_CMD $base$tarfile
      if [ ! -f $tarfile ]; then
         echo cannot find $tarfile
         exit 1
      fi
    fi
 if [ ! -d $uncompressed ]; then
    $UNZIPPER -c -d $tarfile | $TAR -xf -
 fi
fi

exit 0

1 个答案:

答案 0 :(得分:2)

if [ -n "`echo $1 | grep '://'`" ]; then
    base=$1/
    tarfile=$2

您的脚本已设置为使用下载的文件。只需运行您的脚本,将PATH作为$ 1,下载的文件名为$ 2。例如,如果脚本名称为freeSwitch,并且您下载tarball的路径为/home/user1/files/且tarball名称为freeswitch.tar.bz2,则只需运行:

./freeSwitch /home/user1/files/ freeswitch.tar.bz2

这应该使用本地磁盘中的tarball启动脚本,而不是尝试从http://files.freeswitch.org/downloads/libs/下载它。 注意您需要在PATH结尾处跟踪/。祝你好运!