Confirmar escolha/opção em shell script. [RESOLVIDO]

1. Confirmar escolha/opção em shell script. [RESOLVIDO]

Joao Vitorino
joao_vitorino

(usa Red Hat)

Enviado em 31/01/2014 - 15:58h


Tenho seguinte em um shell


Echo " Qual o Caminho para copia dos arquivos?"
read RESP

echo " o caminho $RESP está correto?"
read RESP1

if [ RESP1 = "s" ] then;
cp *.* $RESP

if [ RESP1 = "N" ] then;
echo "Informe o caminho novamente".
fi
fi


Como faço para que quando RESP1 for igual a N, ele fazer a pergunta de qual é o caminho novamente?.







  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 02/02/2014 - 00:19h

* Como o Renato postou, o código apenas faria a pergunta novamente e sairia... não questionando novamente o caminho.


Segue minha recomendação (laço de repetição):


#!/bin/bash
RESP="N"

while [ $RESP == "N" -o $RESP == "n" ]
do
echo " Qual o Caminho para copia dos arquivos?"
read CAMINHO
echo " o caminho $CAMINHO está correto (S/N)?"
read RESP
done


#...continue


Assim a pergunta seria feita até que algo diferente de N ou n fosse informando.

3. Re: Confirmar escolha/opção em shell script. [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 31/01/2014 - 16:10h

A forma mais fácil q eu acho é fazendo função + case:


Echo " Qual o Caminho para copia dos arquivos?"
read RESP

correcao() {
echo " o caminho $RESP está correto?"
read RESP1
}
case RESP1 in

s) cp *.* $RESP ;;
S) cp *.* $RESP ;;
n) echo "Informe o caminho novamente."
correcao ;;
N) echo "Informe o caminho novamente."
correcao ;;
*) echo "Digite apenas S ou N!"
correcao ;;

esac


Posso ter errado algo pq não testei. V ae e me fala.


4. Re: Confirmar escolha/opção em shell script. [RESOLVIDO]

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 31/01/2014 - 16:13h

Tem outro problema ae. Eu não coloquei a condição d teste (se o caminho informado existe e tals). Vc pode fazer com if, assim:


if [ -d $RESP1 ]
then
cp *.* $RESP1
fi



5. Re: Confirmar escolha/opção em shell script. [RESOLVIDO]

Joao Vitorino
joao_vitorino

(usa Red Hat)

Enviado em 04/02/2014 - 11:55h

rai3mb escreveu:

* Como o Renato postou, o código apenas faria a pergunta novamente e sairia... não questionando novamente o caminho.


Segue minha recomendação (laço de repetição):


#!/bin/bash
RESP="N"

while [ $RESP == "N" -o $RESP == "n" ]
do
echo " Qual o Caminho para copia dos arquivos?"
read CAMINHO
echo " o caminho $CAMINHO está correto (S/N)?"
read RESP
done


#...continue


Assim a pergunta seria feita até que algo diferente de N ou n fosse informando.


rai3mb obrigado pela ajuda, mais ainda assim estou tendo dificuldades.

Coloquei o while como falou mas agora apresenta uma mensagem de erro de too many arguments na linha 90 ( a do while).
Resolvi postar o codigo todo do script que estou fazendo. Quero usar esse script para criar pastas em um servidor svn que tenho e para isso preciso editar um arquivo chamado authz.



segue o codigo




#!/bin/bash

AUTHZ='/home/joao/SVN/TESTE/conf/authz'


#Funcoes


function editauthz () {


#Pasta Raiz
echo "[/$NOME_PASTA]" >> $AUTHZ
echo "* =" >> $AUTHZ
echo "@grupo2 = rw" >> $AUTHZ
echo "@grupo3 = rw" >> $AUTHZ

#Pasta grupo1
echo "[/$NOME_PASTA/grupo1]" >> $AUTHZ
echo "* =" >> $AUTHZ
echo "@grupo2 = rw" >> $AUTHZ
echo "@grupo3 = rw" >> $AUTHZ
echo "@grupo5 = r" >> $AUTHZ
echo "@grupo1 = rw" >> $AUTHZ

#Pasta grupo5
echo "[/$NOME_PASTA/grupo5]" >> $AUTHZ
echo "* =" >> $AUTHZ
echo "@grupo2 = rw" >> $AUTHZ
echo "@grupo3 = rw" >> $AUTHZ
echo "@grupo4 = r" >> $AUTHZ
echo "@grupo5 = rw" >> $AUTHZ
echo "@grupo1 = r" >> $AUTHZ


}



function confirmapasta() {

read -n1 CONFIRMA
while [ $CONFIRMA == "n" -o $CONFIRMA == "N" ]
#while [[ $CONFIRMA =~ [Nn]$ ]]
do
informapasta
done
}


function informapasta () {
echo "Informe o Nome da pasta: "
read NOME_PASTA
echo "Criar diretorio na raiz do SVN (s/n) ?"
read -n1 RAIZ
if [[ $RAIZ =~ [Nn]$ ]]; then
echo ""
echo "Informe o caminho da(s) pastas(s) acima da pasta que deseja criar : /PASTA_RAIZ/PASTA1: "
read CAMINHO
echo ""
echo "Verifique se o caminho/nome da pasta estáorreto:"
echo "/$CAMINHO/$NOME_PASTA"
echo ""
echo "O nome da pasta /$CAMINHO/$NOME_PASTA esta correto (s/n) ?"
read -n1 CONFIRMA
fi
if [[ $RAIZ =~ [Ss]$ ]]; then
echo " "
echo "Informe o caminho da(s) pastas(s) acima da pasta que deseja criar : /PASTA_RAIZ/PASTA1: "
read CAMINHO
echo ""
echo "Verifique se o caminho/nome da pasta está correto:"
echo "/$NOME_PASTA"
echo ""
echo "O nome da pasta /$NOME_PASTA esta correto (s/n) ?"
read -n1 CONFIRMA
echo ""
fi
}


informapasta
confirmapasta
if [[ $CONFIRMA =~ [Ss]$ ]]; then
editauthz
else
informapasta
fi




Agradeço a ajuda de todos, to aprendendo ainda shell script e por isso prefiro fazer e depois perguntar onde foi que errei do que simplesmente pedir para alguém fazer o script para mim.










Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts