![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| 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 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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? |
|
||||
|
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). |
|
||||
|
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 |
|
||||
|
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. |
![]() |
| Marcadores |
| Tags |
| condições if |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|