Ajuda!!! shell script + dialog [RESOLVIDO]

1. Ajuda!!! shell script + dialog [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/01/2012 - 15:50h

Olá amigos da vol,

Estou fazendo um shell script para backup, porém estou tendo problema com o trecho abaixo:


titulo="Dados de Entrada"
form="Digite abaixo os nomes do seu backup, do diretório ou arquivo que deseja fazer backup, \
do local de destino do backup e do arquivo e ou diretório que dazer exclude do backup \
(Este arquivo ou diretório deverá está contido dentro local de origem, caso deixe está opção em branco \
nenhum dados será excluido do backup"

entrada=$(dialog --stdout \
--title "$titulo" \
--form "$form" 15 60 4 \
"Nome do backup:" 1 1 " " 1 19 40 0 \
"Local de Origem:" 2 1 " " 2 19 40 0 \
"Local de Destino:" 3 1 " " 3 19 40 0 \
"Exclude:" 4 1 " " 4 19 40 0)

arq=$(echo "$entrada" | head -1)
pat=$(echo "$entrada" |head -2 | tail -1)
patd=$(echo "$entrada" |head -3 | tail -1)
excluir=$(echo "$entrada" | tail -1)

if [ -z "$entrada" ];then
echo " Operação cancelada..." && exit 0
elif [ "$arq" = " " -o "$pat" = " " -o "$patd" = " " ];then
echo "Informação insuficiente" && exit 0
elif [ -e "$pat" ];then
echo " Diretório de origem não existe"
elif [ -e "$patd" ];then
echo "Diretório de destino não existe"
fi

O trecho que mostra as expressões com if e elifs estão dando problema, pois quero verificar se o diretório ou arquivo existe porém se digito um diretório ou arquivo que não existe o script não retorna o esperado que é a messagem com "echo".

já cheguei a pensar que são de alguma forma as variáveis "arq","pat","patd" e "excluir", pois quando rodo o script como está abaixo não funciona, deixando os campos do dialog em branco (sem nada) as expressões não funcionam:

if [ -z "$entrada" ];then
echo " Operação cancelada..." && exit 0
elif [ -z "$arq" -o -z "$pat" -o -z "$patd" ];then
echo "Informação insuficiente" && exit 0
elif [ -e "$pat" ];then
echo " Diretório de origem não existe"
elif [ -e "$patd" ];then
echo "Diretório de destino não existe"
fi

alguém poderia melhorar esta parte do script ou me informar o que está acontecendo ?


  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 01/01/2012 - 16:40h

Observei que vc deixou espaço em branco no seu menu:

"Nome do backup:" 1 1 " " 1 19 40 0 \
"Local de Origem:" 2 1 " " 2 19 40 0 \
"Local de Destino:" 3 1 " " 3 19 40 0 \
"Exclude:" 4 1 " " 4 19 40 0)

Então o conteúdo das variáveis sempre está ficando com conteúdo ;-), por isso o problema no if ;-)

Veja agora:

#!/bin/bash
titulo="Dados de Entrada"
form="Digite abaixo os nomes do seu backup, do diretório ou arquivo que deseja fazer backup, \
do local de destino do backup e do arquivo e ou diretório que dazer exclude do backup \
(Este arquivo ou diretório deverá está contido dentro local de origem, caso deixe está opção em branco \
nenhum dados será excluido do backup"

entrada=$(dialog --stdout \
--title "$titulo" \
--form "$form" 15 60 4 \
"Nome do backup:" 1 1 "" 1 19 40 0 \
"Local de Origem:" 2 1 "" 2 19 40 0 \
"Local de Destino:" 3 1 "" 3 19 40 0 \
"Exclude:" 4 1 "" 4 19 40 0)

arq=$(echo "$entrada" | head -1)
pat=$(echo "$entrada" |head -2 | tail -1)
patd=$(echo "$entrada" |head -3 | tail -1)
excluir=$(echo "$entrada" | head -4 | tail -1)

if [ -z "$entrada" ];then
echo " Operação cancelada..." && exit 0
elif [ -z "$arq" -o -z "$pat" -o -z "$patd" ];then
echo "Informação insuficiente" && exit 0
elif [ ! -d "$pat" ];then
echo " Diretório de origem não existe"
elif [ ! -d "$patd" ];then
echo "Diretório de destino não existe"
fi


3. Re: Ajuda!!! shell script + dialog [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 01/01/2012 - 16:01h

Troque isso :

elif [ -e "$pat" ];then
echo " Diretório de origem não existe"
elif [ -e "$patd" ];then

por


...
elif [ ! -d "$pat" ];then
echo " Diretório de origem não existe"
elif [ ! -d "$patd" ];then
...


e vai dar certo, você estava testando se o conteúdo era um arquivo, e a intenção é testar se o conteúdo não é um diretório, então usei o:

-d : testa se e arquivo

! : nega a condição


4. Re: Ajuda!!! shell script + dialog [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/01/2012 - 16:26h

Valeu pelo retorno rai3mb,

Mas ainda não está funcionando.

como eu quero testar se o diretório e ou arquivo de origem existem e o diretório do destino existem, coloquei estas expressões para testar, porém não tá funcionando ainda mesmo com sua solução

e o segundo problema é que quando testo dessa forma, no trecho abaixo, já com suas alterações, o retorno da expressão elif [ -z "$arq" -o -z "$pat" -o -z "$patd" ];then, não retorna o "echo", mesmo eu deixando as varíveis em branco:

if [ -z "$entrada" ];then
echo " Operação cancelada..." && exit 0
elif [ -z "$arq" -o -z "$pat" -o -z "$patd" ];then
echo "Informação insuficiente" && exit 0
elif [ -e "$pat" ];then
echo " Diretório de origem não existe"
elif [ -e "$patd" ];then
echo "Diretório de destino não existe"
fi


alguma outra dica ?






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts