The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX para Dummies Perguntas & Respostas
.
google unix.com



UNIX para Dummies Perguntas & Respostas Se não tiver certeza de onde se pode postar uma pergunta Unix ou Linux, postá-lo aqui. Todos os UNIX e Linux novatos bem vindos!

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Como GIV duas condições no SE declaração ..? RRVARMA Programação Shell Script e 6 04-25-2008 10:33
ou reduzir as condições hitmansilentass Programação Shell Script e 8 05-03-2007 06:27
múltiplas condições de se / então grandtheftander UNIX para Dummies Perguntas & Respostas 4 07-21-2006 02:58
declaração se com duas condições cin2000 Programação Shell Script e 1 01-23-2006 03:21
declaração se com duas condições-E, & & yongho Programação Shell Script e 16 06-14-2005 05:46

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 07-28-2008
Borobudur borobudur is offline
Usuário
  
 

Join Date: Jul 2008
Local: Genebra, Suíça
Lugares: 23
Duas condições em que uma declaração

Sou totalmente novo com bash programação e eu não entendi como colocar duas condições se em uma declaração. Meu código parecido com isto:

Código:
h=`date +%k`
if [ [ $((h>9)) ] && [ $((h<21)) ] ]; then

$ h é 10, mas eu não chegar no meu caso declaração. O que há de errado aqui?
  #2 (permalink)  
Old 07-28-2008
era era is offline Forum Advisor  
Herder do Inútil Gatos (On Sabático)
  
 

Join Date: Mar 2008
Localização: / lá / é / só / bin / sh
Posts: 3.652
O reservatório tem uma misteriosa série de alternativas para a sintaxe condicionais.

O [delimitador não é um tradicional, mas o nome de um comando. A forma de utilizá-lo para várias expressões é assim:


Código:
if [ "$h" -gt 9 ] && [ "$h" -lt 21 ]; then
  ...
fi

Um pouco mais recente (isto é, pós-1979 ou por aí ...) sintaxe é


Código:
if [ "$h" -gt 9 -a "$h" -lt 21 ]; then
  ...
fi

O $((...)) sintaxe é muito mais recente, e introduz uma aritmética (incluindo a> e <operadores), mas não é directamente utilizável como uma condição. Ele simplesmente se expande a 0 para falso e 1 para verdadeiro. Mas, claro, você pode misturar e combinar:


Código:
if [ $((h > 9 && h < 21)) == 1 ]; then
  ...
fi

Finalmente, há o [[... ]] Condicional, o que provavelmente é o que você está depois:


Código:
if [[ $h > 9 ]] && [[ $h < 21 ]]; then
  ...
fi

Os caracteres que compõem o [[delimitador não podem ser separados por espaço (para o melhor do meu conhecimento).
  #3 (permalink)  
Old 07-28-2008
krishmaths krishmaths is offline
Usuário
  
 

Join Date: Sep 2006
Localização: Mysore, Índia
Lugares: 191
Tente este:


Código:
if [ $h -gt 9 -a $h -lt 21 ]; then

  #4 (permalink)  
Old 07-28-2008
Borobudur borobudur is offline
Usuário
  
 

Join Date: Jul 2008
Local: Genebra, Suíça
Lugares: 23
Oh rapaz! Acho que estou a jovens para isso. Estou a partir do Java geração, bash parece ser bastante complicado.

Estas duas parecem funcionar. É realmente a mesma?


Código:
if [ $h -gt 9 -a $h -lt 21 ]; then


Código:
if [ "$h" -gt 9 ] && [ "$h" -lt 21 ]; then

  #5 (permalink)  
Old 07-28-2008
era era is offline Forum Advisor  
Herder do Inútil Gatos (On Sabático)
  
 

Join Date: Mar 2008
Localização: / lá / é / só / bin / sh
Posts: 3.652
As aspas são principalmente de segurança (bom hábito, no caso $ h acaba contendo uma seqüência vazia, por erro, por exemplo) e, em teoria, o & & variante poderia criar dois processos externos, onde um só criar uma. (It's theory porque [é provavelmente manipulados internamente nos reservatórios modernos, pelo que não há processo externas envolvidas.)

Shell scripts não são analisados muito, a sintaxe é mais raso do que em muitas outras línguas scripting e isso cria algumas complicações, mas também ajuda a tornar a casca extremamente versátil. A falta de padrão, built-in operadores aritméticos, desde o início é outra fonte de complexidade, neste caso. POSIX tentativas de corrigir algumas das questões, mas, historicamente, diferentes reservatórios desenvolveram extensões diferentes que têm, em seguida, criou, por assim dizer, ainda mais diferentes maneiras para a pele um gato.
  #6 (permalink)  
Old 07-28-2008
Borobudur borobudur is offline
Usuário
  
 

Join Date: Jul 2008
Local: Genebra, Suíça
Lugares: 23
Graças a vocês por sua ajuda!
Closed Thread

Marcadores

Tags
condições if

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 12:33.


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