The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX & avançada para usuários experientes
.
google unix.com



UNIX & avançada para usuários experientes Especialista-a-Expert. Saiba avançado UNIX, comandos UNIX, Linux, Sistemas Operativos, Administração de Sistemas, Programação, Shell, shell scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Bourne Shell script - log de loggin usuários sobre e fora noodlesoup Programação Shell Script e 14 09-08-2006 11:30
Bourne: Como invocar um alias dentro de um shell script techshots Programação Shell Script e 2 06-04-2006 01:38
a partir de um cd Bourne Shell Script - Please Help fawqati Programação Shell Script e 10 05-25-2006 04:26
Bourne Shell Script dmhonor914 UNIX para Dummies Perguntas & Respostas 2 12-10-2003 12:25
bourne shell script psrinivas Programação Shell Script e 2 12-06-2001 03:38

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 10-18-2001
dezithug dezithug is offline
Usuário
  
 

Join Date: Oct 2001
Localização: Los Angeles
Posts: 6
Question Bourne shell script precisa ajudar por favor?

Tenho esta atribuição .. e eu louco esse script, mas há algo de errado com ele .. se alguém pode me dizer .. watz acontecendo ... Gostaria que .. thnx in advance ..
Código:
count=1
val=$2
op=$1
ans=0
if [ $op = "-e" -o $op = "-o" ]
then
        if [ $op = "-e" ]
        then
                while [ $count -le $val ]
                do
                        ans=`expr $count % 2`
                        if [ $ans -eq 0 ]
                        then
                        echo "$count \c "
                        count=`expr $count + 1`
                        fi
                done
        elif [ $op = "-o" ]
        then
                while [ $count -le $val ]
                do
                        ans=`expr $count % 2`
                        if [ $ans -ne 0 ]   
                        then
                        echo "$count \c "
                        count=`expr $count + 1`
                        fi
                done
        fi
else
        while [ $count -le $val ]
        do
                echo "$count \c "
                count=`expr $count + 1`
        done
fi
Thnx novamente

adicionado código tags para facilitar a leitura - oombera

Última edição por oombera; em 02/20/2004 11:51..
  #2 (permalink)  
Old 10-19-2001
LivinFree's Avatar
LivinFree LivinFree is offline Forum Advisor  
Goober Extraordinaire
  
 

Join Date: Jul 2001
Localização: Portland, OR, E.U.A.
Posts: 1.584
Uma coisa que me fez notar é que, se você estiver usando Linux, você deve mudar o eco declarações ao "echo-e". Isso vai deixar o \ c operadores trabalho.

O que exatamente você está tentando fazer aqui? Estou tendo um tempo dura a leitura do script (olha, é tarde, e fui ligar algumas horas em cima da minha normalmente longos dias ...). Parece que você poderia usar alguns comentários ...

Você inclinado como usar o "caso" ainda? Se assim for, você pode olhar sobre o uso que - você pode cortar uma grande parte da confusão "se" declarações fora de lá ...
  #3 (permalink)  
Old 10-19-2001
dezithug dezithug is offline
Usuário
  
 

Join Date: Oct 2001
Localização: Los Angeles
Posts: 6
veja bem .. Eu estou usando SCO UNIX .. nd .. tudo funciona .. boa .. excepto no loop iz algo errado .. quando eu tento executá-lo .. Juss vai continuar a passar ... por alguma razão ... nd sua soo confusa ..

não temos ainda aprendido CASO .. Sei que seria mais fácil .. mas .. i donno como usar CASO ..

yoiu ainda se pode pensar em algo .. dat seria gr8

Thnx
  #4 (permalink)  
Old 10-23-2001
LivinFree's Avatar
LivinFree LivinFree is offline Forum Advisor  
Goober Extraordinaire
  
 

Join Date: Jul 2001
Localização: Portland, OR, E.U.A.
Posts: 1.584
Bem, primeiro fora, ele me ajudou muito de olhar para o código com travessões em que:
Código:
#!/bin/ksh
count=1 
val=$2 
op=$1 
ans=0 
if [ $op = "-e" -o $op = "-o" ] 
then 
     if [ $op = "-e" ] 
     then 
     while [ $count -le $val ] 
     do 
     ans=`expr $count % 2` 
          if [ $ans -eq 0 ] 
          then 
          echo "$count \c " 
          count=`expr $count + 1` 
          fi 
     done 
     elif [ $op = "-o" ] 
     then 
     while [ $count -le $val ] 
     do 
     ans=`expr $count % 2` 
          if [ $ans -ne 0 ] 
          then 
          echo "$count \c " 
          count=`expr $count + 1` 
          fi 
     done 
     fi 
else 
while [ $count -le $val ] 
do 
echo "$count \c " 
count=`expr $count + 1` 
done 
fi
Agora, a primeira coisa que eu costumo tentar quando tentam figureout que o meu script está a fazer é adicionar um "set-x" linha no topo do script. Isso eco de cada passo, o reservatório está realizando, assim você pode ver o que está acontecendo ...

Então, a maneira que eu corria o script, (Eu vou dar um exemplo daquilo que eu acho que vi a tentar utilizar o "e-4" opção) ele ficou preso em um loop em:
Ans \u003d 1 +
+ '[' 1-eq 0 ']'
+ '[' 1-le 4 ']'
+ + Expr 1% 2
Ok, interessante ... Vamos olhar para isto. Então, qual o script está fazendo passo a passo:
Código:
     if [ $op = "-e" ]                       # This is true in our case
     then 
     while [ $count -le $val ]          # while 1 is less than or equal to 4
     do 
     ans=`expr $count % 2`         # ans = 1 % 2, or ans = 1
          if [ $ans -eq 0 ]                  # if ans (1) = 0, then continue... nope - can't continue
          then 
          echo "$count \c " 
          count=`expr $count + 1` 
          fi                                         # We're done, time to loop while waiting for ans to equal 0
Você vê o que você tem problema? Dica: $ ans será sempre igual a 1, neste caso,

Aqui está outra (Messier, mas mais info) maneira de fazê-lo:
Código:
if [ "$op" = "-e" -o "$op" = "-o" ]
echo " if [ $op = -e -o $op = -o ]"
        then
echo "     then"
        if [ "$op" = "-e" ]
echo "     if [ $op = -e ] "
        then
echo "     then"
        while [ "$count" -le "$val" ]
echo "     while [ $count -le $val ] "
        do
echo "     do"
        ans=`expr $count % 2`
echo "     ans=`expr $count % 2` "
                if [ "$ans" -eq "0" ]
echo "          if [ $ans -eq 0 ] "
                then
echo "          then"
                echo -e "$count \c "
echo "          echo -e $count \c"
                count=`expr $count + 1`
echo "          count=`expr $count + 1`"
Dessa forma, você pode ver seu script em ação ... É quase como se ela parece não saber quando sair, certo?

Você pode precisar um pouco de re-desenhar, mas eu acho que você está muito bem no caminho certo

(Ah, e eu appologize, eu mudei algumas das "echo" é a "echo-e" 's, uma vez que eu estava a olhar para isso em um sistema Linux ...

Isso ajuda qualquer?
  #5 (permalink)  
Old 10-24-2001
dezithug dezithug is offline
Usuário
  
 

Join Date: Oct 2001
Localização: Los Angeles
Posts: 6
v. .. Eu ainda donno watz .. errado .. mas .. wat agora estou a fazer Trin iz .. pausa no programa da lil programz .. e .. Trin-e apenas opção .. só para que .. e esquecer-se sobre outras opções .. Espero que ajude .. lol mas .. thnx nwyz .. Tentei .. seu código .. mas ainda didnt get .. wat happend .. Sei que o seu .. o módulo .. asneira coisa ..
Ahh .. lol .. Fui trabalhar sobre isso por gosto 3 weekz .. agora .. risos. e os seus devidos sobre nov. 8. .. eu tenho .. mais algum tempo ..


thnx .. embora novamente .. I appreciate it
  #6 (permalink)  
Old 10-24-2001
dezithug dezithug is offline
Usuário
  
 

Join Date: Oct 2001
Localização: Los Angeles
Posts: 6
obrigado veryyyyy muchhhhh!

Eu finalmente peguei .. para trabalhar whoooooooooooooooohooooooooooooooooooooooooooo .. lol .. caramba .. dat me levou .. nuff longo. .. lol .. tal um programa simples. ª me levou .. bout 3 weekz .. caramba ..

nwy z. .. thnx para ajudar seu irmão .. Eu aprecio isso ... muito ..



Pz fora!

Novamente Thnx!
  #7 (permalink)  
Old 10-24-2001
LivinFree's Avatar
LivinFree LivinFree is offline Forum Advisor  
Goober Extraordinaire
  
 

Join Date: Jul 2001
Localização: Portland, OR, E.U.A.
Posts: 1.584
Right on! Você pode postar sua solução para ele para nos ver?
Closed Thread

Marcadores

Tags
linux

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 02:23.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0