Ajuda. Erro if/case

1. Ajuda. Erro if/case

Alfredo Monteiro
arbmbrbm

(usa RedHat)

Enviado em 25/10/2007 - 13:22h

Boa tarde.

Sou novo no mundo do shell script e estou a ter um erro num script que estou a fazer. Estou a ter o erro "./1teste.sh[11]: Syntax error at line 24 : `case' is not matched."
Pelo que me apercebi, o erro só aparece devido ao if no 2º parametro do case (2) echo "SIEBEL_CREATEBUILDINGANDUA_EAI:";).
Será que alguém me poderia ajudar a detectar e corrigir o erro?

Obrigado.

O script é o seguinte:

opcao=1

clear # limpar o ecrã
echo "\n\n"

echo "\t***********************"
echo "\t* Verificador *"
echo "\t* de estado *"
echo "\t***********************\n"

while [ $opcao != 0 ]; do

echo "______________________________________"
echo "| Processos |"
echo "|------------------------------------|"
echo "| 0 - Sair |"
echo "| 1 - SIEBEL_GETADDRESS_EAI |"
echo "| 2 - SIEBEL_CREATEBUILDINGANDUA_EAI |"
echo "|____________________________________|"


echo "\nProcesso a verificar: \\c" # o \\c é para manter o cursor na mm linha
read opcao
case $opcao in
1) echo "SIEBEL_GETADDRESS_EAI:";

# KISS_CUSTOMERCARE_01
bw1=KISS_CUSTOMERCARE_01;

l1=`ps -efx | grep $bw1`;
len1=`echo $l1 | wc -c`;
if [ $len1 -lt 100 ]; then
echo "\t$bw1: !! NOT OK !!";
else
echo "\t$bw1: OK";
fi;

# KISS_SYNCHRONOUS
bw2=KISS_SYNCHRONOUS;

l2=`ps -efx | grep $bw2`;
len2=`echo $l2 | wc -c`;
if [ $len2 -lt 100 ]; then
echo "\t$bw2: !! NOT OK !!";
else
echo "\t$bw2: OK";
fi;

# ADB_SYNCHRONIZE_ADDRESS
bw3=ADB_SYNCHRONIZE_ADDRESS;

l3=`ps -efx | grep $bw3`;
len3=`echo $l3 | wc -c`;
if [ $len3 -lt 100 ]; then
echo "\t$bw3: !! NOT OK !!";
else
echo "\t$bw3: OK";
fi;

# KISS_ADB_LEGACY_SINCRONOS
bw4=KISS_ADB_LEGACY_SINCRONOS;

l4=`ps -efx | grep $bw4`;
len4=`echo $l4 | wc -c`;
if [ $len4 -lt 100 ]; then
echo "\t$bw4: !! NOT OK !!";
else
echo "\t$bw4: OK";
fi;;

2) echo "SIEBEL_CREATEBUILDINGANDUA_EAI:";

# KISS_CUSTOMERCARE_01
bw1=KISS_CUSTOMERCARE_01;

l1=`ps -efx | grep $bw1`;
len1=`echo $l1 | wc -c`;
if [ $len1 -lt 100 ]; then
echo "\t$bw1: !! NOT OK !!";
else
echo "\t$bw4: OK";
fi;;

0) echo "Have fun"; exit 0;;
*) echo "Opção inválida!! Escolha uma nova opção";;
esac
done


  


2. Re: Ajuda. Erro if/case

Anonymous Misteryous
nemphilis

(usa Outra)

Enviado em 25/10/2007 - 15:01h

aqui funcionou normalmente da forma abaixo amigo, creio nao ter alterado nada, a nao ser adicionado parametros no echo.
Cole a versao do seu bash aih pra eu testar, creio que voce esta no bash 2 nao eh?
lembrando que $bash --version mostra sua versao do bash.

Qualquer coisa, entre na freenode, no canal bash-br a gente se ve por la

Abracos,


#!/bin/bash
opcao=1

clear # limpar o ecrã
echo -e "\n\n"

echo -en "\t***********************"
echo -en "\t* Verificador *"
echo -en "\t* de estado *"
echo -en "\t***********************\n"

while [ $opcao != 0 ]; do

echo "______________________________________"
echo "| Processos |"
echo "|------------------------------------|"
echo "| 0 - Sair |"
echo "| 1 - SIEBEL_GETADDRESS_EAI |"
echo "| 2 - SIEBEL_CREATEBUILDINGANDUA_EAI |"
echo "|____________________________________|"


echo -en "\nProcesso a verificar: \\c" # o \\c é para manter o cursor na mm linha
read opcao
case $opcao in
1) echo "SIEBEL_GETADDRESS_EAI:";
# KISS_CUSTOMERCARE_01
bw1=KISS_CUSTOMERCARE_01
l1=`ps -efx | grep $bw1`;
len1=`echo $l1 | wc -c`;
if [ $len1 -lt 100 ]; then
echo "\t$bw1: !! NOT OK !!";
else
echo "\t$bw1: OK";
fi;

# KISS_SYNCHRONOUS
bw2=KISS_SYNCHRONOUS

l2=`ps -efx | grep $bw2`;
len2=`echo $l2 | wc -c`;
if [ $len2 -lt 100 ]; then
echo "\t$bw2: !! NOT OK !!";
else
echo "\t$bw2: OK";
fi;

# ADB_SYNCHRONIZE_ADDRESS
bw3=ADB_SYNCHRONIZE_ADDRESS

l3=`ps -efx | grep $bw3`;
len3=`echo $l3 | wc -c`;
if [ $len3 -lt 100 ]; then
echo "\t$bw3: !! NOT OK !!";
else
echo "\t$bw3: OK";
fi;

# KISS_ADB_LEGACY_SINCRONOS
bw4=KISS_ADB_LEGACY_SINCRONOS

l4=`ps -efx | grep $bw4`;
len4=`echo $l4 | wc -c`;
if [ $len4 -lt 100 ]; then
echo "\t$bw4: !! NOT OK !!";
else
echo "\t$bw4: OK";
fi;;

2) echo "SIEBEL_CREATEBUILDINGANDUA_EAI:";

# KISS_CUSTOMERCARE_01
bw1=KISS_CUSTOMERCARE_01

l1=`ps -efx | grep $bw1`;
len1=`echo $l1 | wc -c`;
if [ $len1 -lt 100 ]; then
echo "\t$bw1: !! NOT OK !!";
else
echo "\t$bw4: OK";
fi;;

0) echo "Have fun"; exit 0;;
*) echo "Opção inválida!! Escolha uma nova opção";;
esac
done



3. Re: Ajuda. Erro if/case

Alfredo Monteiro
arbmbrbm

(usa RedHat)

Enviado em 12/11/2007 - 13:14h

Obrigado Nemphilis.

O problema já foi ultrapassado, mudei de editor. Estava a utilizar o Putty para executar o scritp, passei a usar o Cygwin.
Obrigado pela ajuda.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts