对脚本有点帮助

时间:2014-09-10 16:30:48

标签: linux bash

我制作了一个下载LibreOffice的脚本 并在Slackware Linux上升级它。 我想做一个简单的纠正;如果包文件无法下载, 我希望脚本返回"脚本在..."

失败

例如, 如果libreoffice-mozplug..etc失败脚本返回 "在upgradepkg失败 - 安装新的libreoffice-mozplug..etc" 怎么做?

这是剧本(我知道......这不是最好的,但我正在研究它)

#!/bin/sh
set -e
VERSION=4.3.1
LACKVERSION=14.1
alias wget="wget -nc"
#get!
wget http://www.slackware.com/~alien/slackbuilds/libreoffice/pkg64/$LACKVERSION/libreoffice-$VERSION-x86_64-1alien.txz.asc
wget http://www.slackware.com/~alien/slackbuilds/libreoffice/pkg64/$LACKVERSION/libreoffice-$VERSION-x86_64-1alien.txz
wget http://www.slackware.com/~alien/slackbuilds/libreoffice/pkg64/$LACKVERSION/libreoffice-dict-it-$VERSION-x86_64-1alien.txz.asc
wget http://www.slackware.com/~alien/slackbuilds/libreoffice/pkg64/$LACKVERSION/libreoffice-dict-it-$VERSION-x86_64-1alien.txz
wget http://www.slackware.com/~alien/slackbuilds/libreoffice/pkg64/$LACKVERSION/libreoffice-l10n-it-$VERSION-x86_64-1alien.txz.asc
wget http://www.slackware.com/~alien/slackbuilds/libreoffice/pkg64/$LACKVERSION/libreoffice-l10n-it-$VERSION-x86_64-1alien.txz
wget http://www.slackware.com/~alien/slackbuilds/libreoffice/pkg64/$LACKVERSION/libreoffice-mozplugin-$VERSION-x86_64-1alien.txz
wget http://www.slackware.com/~alien/slackbuilds/libreoffice/pkg64/$LACKVERSION/libreoffice-mozplugin-4.3.1-x86_64-1alien.txz.asc


#funzione gpg
funzion1()
{
arg1=$1
arg2=$2
gpg -v $1

}
#check gpg signature
for i in *.asc;do `funzion1 $i`;done

if [ $? -eq 0 ]
then
    echo "All is well"
else
    echo "Problem with signature."
fi


#funzione upgrade
funzion2()
{
arg1=$1
arg2=$2
upgradepkg --install-new  $1

}
#check upgrade
for i in *.txz;do `funzion2 $i`;done

if [ $? -eq 0 ]
then
    echo "All is well"
else
    echo "Problem with upgrade."
fi

3 个答案:

答案 0 :(得分:1)

下载文件后,您只需要以下内容(您的功能并不足以为定义它而烦恼):

for i in *.asc; do
    if gpg -v "$i"; then
        echo "$i is OK"
    else
        echo "Problem with $i's signature"
    fi
done

您想要检查每次gpg来电的返回状态,而不仅仅是最后一次。

答案 1 :(得分:1)

更改:

for i in *.txz;do `funzion2 $i`;done

for i in *.txz;do `funzion2 $i || echo "Error with: $i"`;done

Ps:未经测试。

答案 2 :(得分:1)

我无法帮助,但觉得wget的8次调用是非常重复的。

为什么不:

URL_BASE=http://www.slackware.com/~alien/slackbuilds/libreoffice/pkg64/$LACKVERSION
PKG_SUFFIX=$VERSION-x86_64-1alien.txz

for pkg in libreoffice libreoffice-dict-it libreoffice-l10n-it libreoffice-mozplugin
do
    main="$URL_BASE/$pkg-$PKG_SUFFIX"
    wget "$main" || exit 1
    wget "$main.asc" || exit 1
done