Problemas basicos com script

1. Problemas basicos com script

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/08/2010 - 21:57h

a muito tempo fiz um script que gera pacote do slackware a partir do fonte, mas estou com uns problemas

antes de tudo aki está o meu script

=======================================

#!/bin/bash

PWD=`pwd`
ARCH=`arch`
DGFBASETMP=/var/DGF/TMP
DGFBASE=/var/DGF/PKG

if [ -z $DGFBASE ]; then
mkdir $DGFBASE
fi

if [ -z $DGFBASETMP ]; then
mkdir $DGFBASETMP
fi

if [ "$ARCH" = "x86_64" ]; then
if [ -d /usr/lib64 ]; then
LIB=/usr/lib64
else
LIB=/usr/lib
fi
else
LIB=/usr/lib
fi

#########################################
# Inicio das Fun��es
#########################################

AVISO() {
echo -e "\e[1;01m############################################################\e[0m"
echo -e "\e[1;01m$1\e[0m"
echo -e "\e[1;01m############################################################\e[0m"
}

ERRO() {
echo "[ERRO!] O script foi interrompido no processo: $1"
exit 1
}

CONFIGURE() {
CONFIGURE2() {
if [ -e ./configure ]; then
./configure --help || ./configure -help
COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB "
echo -n "Acrescente os parametros que desejar: $COMANDO" ; read PARAMETROS

COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS ||
COMANDO="./configure --prefix=/usr --libdir=$LIB $PARAMETROS" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr --libdir=$LIB ||
COMANDO="./configure --prefix=/usr" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr || ERRO "$COMANDO"
fi
}
if [ -e $DGFBASETMP/$DIRETORIO/configure ]; then
cd $DGFBASETMP/$DIRETORIO
CONFIGURE2
elif [ -e $DGFBASETMP/$DIRETORIO/src/configure ]; then
cd $DGFBASETMP/$DIRETORIO/src
CONFIGURE2
fi
}

MAKE() {
MAKE2() {
echo -n "Acrescente os parametros que desejar no make: " ; read PARAMETROS_MAKE
COMANDO="make $PARAMETROS_MAKE"
AVISO "$COMANDO"
make $PARAMETROS_MAKE || ERRO $COMANDO
}
if [ -e $DIR/$DIRETORIO/Makefile ]; then
MAKE2
elif [ -e $DIR/$DIRETORIO/src/Makefile ]; then
cd $DIR/src
MAKE2
fi
}

MAKE_INSTALL() {
MAKE_INSTALL2() {
PARAMETRO_MAKE_INSTALL="INSTALL_TOP=$1 PREFIX=$1 DESTDIR=$1 INSTALL_ROOT=$1 PREFIX_ROOT=$1"
COMANDO="make install $PARAMETRO_MAKE_INSTALL"
AVISO "$COMANDO"
make install ""$PARAMETRO_MAKE_INSTALL"" || ERRO "$COMANDO"
}
cd $DGFBASETMP/$DIRETORIO
DIR2=`echo $DIRETORIO`-TMP
mkdir $DGFBASETMP/$DIR2
MAKE_INSTALL2 "$DGFBASETMP/$DIR2"
}


MAKEPKG(){
cd $DGFBASETMP/$DIR2
NUM=1
NOME_PKG=$DIRETORIO-$ARCH-$NUM.tgz

while [ -e $DGFBASE/$NOME_PKG ]; do
let NUM++
NOME_PKG=$DIRETORIO-$ARCH-$NUM.tgz
done

COMANDO="makepkg -l y -c n $DGFBASE/$NOME_PKG"
AVISO $COMANDO
makepkg -l y -c n $DGFBASE/$NOME_PKG || ERRO "$COMANDO"

if [ -e $DGFBASE/$NOME_PKG ]; then
RESPOSTA="errada"
while [ "$RESPOSTA" = "errada" ]; do
echo "Deseja instalar o pacote? $DGFBASE/$NOME_PKG [S/n] : " ; read -n 1 RESPOSTA
RESPOSTA=`echo $RESPOSTA | tr A-Z a-z`
if [ -z $RESPOSTA ]; then
RESPOSTA=s
fi
case $RESPOSTA in
[ys]) AVISO "installpkg $DGFBASE/$NOME_PKG" ; installpkg $DGFBASE/$NOME_PKG ;;
n) echo ;;
*) RESPOSTA="errada" ;;
esac
done
fi
}

LIMPA() {
RESPOSTA2="errada"
while [ "$RESPOSTA2" = "errada" ]; do
echo "Deseja excluir os restos? "\"$DGFBASETMP/$DIRETORIO\" \"$DGFBASETMP/$DIR2\"" [S/n]" ; read -n 1 RESPOSTA2
echo
RESPOSTA2=`echo $RESPOSTA2 | tr A-Z a-z`
if [ -z $RESPOSTA2 ]; then
RESPOSTA2=s
fi

case $RESPOSTA2 in
[ys]) rm -rv $DGFBASETMP/$DIRETORIO ; rm -rf $DGFBASETMP/$DIR2 ;;
n) echo ;;
*) RESPOSTA2="errada" ;;
esac
done
}

#########################################
# Fim das Fun��es
#########################################

case $1 in
-c) if [ -d $2 ]; then
cd $2
VAR=$2
if [ $VAR = './' ]; then
VAR=$PWD
fi
else
echo "Diretorio invalido!" ; exit 1
fi
DIR=`dirname $VAR`
PKG=`basename $VAR`
DIRETORIO=$PKG
CONFIGURE ; MAKE ; MAKE_INSTALL ; MAKEPKG ; LIMPA ;;

-m) if [ -d $2 ]; then
cd $2
VAR=$2
if [ $VAR = './' ]; then
VAR=$PWD
fi
else
echo "Diretorio invalido!" ; exit 1
fi
DIR=`dirname $VAR`
PKG=`basename $VAR`
DIRETORIO=$PKG
MAKE ; MAKE_INSTALL ; MAKEPKG ; LIMPA ;;

-mi)if [ -d $2 ]; then
cd $2
VAR=$2
if [ $VAR = './' ]; then
VAR=$PWD
fi
else
echo "Diretorio invalido!" ; exit 1
fi
DIR=`dirname $VAR`
PKG=`basename $VAR`
DIRETORIO=$PKG
MAKE_INSTALL ; MAKEPKG ; LIMPA ;;

-mp)if [ -d $2 ]; then
cd $2
VAR=$2
if [ $VAR = './' ]; then
VAR=$PWD
fi
else
echo "Diretorio invalido!" ; exit 1
fi
DIR=`dirname $VAR`
DIR2=`basename $VAR`
DIRETORIO=$PKG
MAKEPKG ; LIMPA ;;

-l) AVISO "rm -rf $DGFBASETMP/*" ; rm -rf $DGFBASETMP/*;;

-lp) AVISO "rm -rf $DGFBASE/*" ; rm -rf $DGFBASE/*;;

*)
DIR=`dirname $1`
PKG=`basename $1`

case $PKG in
*.tar.gz) tar -xzvf $DIR/$PKG -C $DGFBASETMP ; COMPACTACAO=.tar.gz ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ;;
*.tgz) tar -xzvf $DIR/$PKG -C $DGFBASETMP ; COMPACTACAO=.tar.gz ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ;;
*.tar.bz2) tar -xjvf $DIR/$PKG -C $DGFBASETMP ; COMPACTACAO=.tar.bz2 ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ;;
*.tar) tar -xvf $DIR/$PKG -C $DGFBASETMP ; COMPACTACAO=.tar ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ;;
*.bz2) bunzip $DIR/$PKG $DGFBASETMP || bunzip2 $pkg ; COMPACTACAO=.bz2 ; DIRETORIO=`echo $DIR/$PKG | sed -e 's/'$COMPACTACAO'//g'` ;;
*.rar) unrar x $DIR/$PKG $DGFBASETMP ; COMPACTACAO=.rar ;;
*.zip) gunzip $DIR/$PKG $DGFBASETMP ; COMPACTACAO=.zip ;;
esac

CONFIGURE
MAKE
MAKE_INSTALL
MAKEPKG
LIMPA
exit 1 ;;
esac

========================================================================

o problema está aki

------------------------

if [ -e ./configure ]; then
./configure --help || ./configure -help
COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB "
echo -n "Acrescente os parametros que desejar: $COMANDO" ; read PARAMETROS

COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS ||
COMANDO="./configure --prefix=/usr --libdir=$LIB $PARAMETROS" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr --libdir=$LIB ||
COMANDO="./configure --prefix=/usr" &&
AVISO "$COMANDO" &&
./configure --prefix=/usr || ERRO "$COMANDO"

-----------------------

o que eu quero fazer é o seguinte, essa parte de script executa o configure do fonte com alguns parametros, porem nem todos os script aceita esses parametros, ai a ideia foi o seguinte

ele tenta isso

./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS

se der errado ele vai p proxima linha, e se der certo ele ignora o resto da linha

p imendar tudo eu coloquei \ no final e antes o || p executar a sequencia da linha caso de errado o 1° comando

o problema é que msm o 1° comando funcionando perfeitamente ele da sequencia nos outros ./configure

como resolver isso??


  


2. Re: Problemas basicos com script

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/08/2010 - 21:59h

criei o script só p ver se conseguia e p criar facilmente os pacotes que nao existe no slackbuilds.org


3. UP!

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/08/2010 - 22:24h

alguem sabe aew??

na verdade isso parece ser facinho, pois eu faço isso, mas tudo em uma unica linha, mas nesse caso é muito conteudo p colocar em uma unica linha, ai só queria saber se tem como

ex.:

$ cd /root || cd $HOME

aki ele vai tentar ir no diretorio /root, mas por padrão somente o root pode acessar o tal diretorio, ai vai apresentar um erro e vai executar o proximo comando que seria mudar p diretorio $HOME

seria algo assim mas quebrando as linhas

cd /root || \
cd $HOME

mas desse jeito deu errado, e queria saber se tem algum modo

estou explicando dnovo p ficar mais claro, ja que fica meiu cansativo ler script dos outros, ai fiz um exemplo bem simple e pequeno


4. up 2

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/08/2010 - 20:16h

alguem sabe se isso é possivel??






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts