cara, o bash não faz cálculo em ponto flutuante (com vírgula), mas a calculadora bc faz.
Dê uma olhada nisso: echo 2.0 == 2.000 | bc -l 1 echo 2.0 == 1.23 | bc -l 0 O bc executa e devolve na tela 1 se é true e 0 se é false. Mas isto é exatamente o oposto do que os comandos no linux retornam. Aí é sí inverter pra usar no shell: if (( $(echo 2.0 == 1.006 | bc -l) )); then echo isso é falso fi Aí vc pode até criar uma função que já deixe isso implicito, ou algo assim. Bem, é uma solução para o promeiro problema, mas isso só funciona no bash. Para usar o test, use em vez de (( )), [ ]. 2009/12/2 Jair Santanna <[email protected]> > > > Caros, tenho um if do tipo: > if [ $x -ge $y] && [$x -ge 10 ]; then > no entanto tanto $x quanto $y é uma variável vinda de um resultado do > bc (Ex: 187.456 e 42.53)! como eu faço pra essa comparação no if dar > certo? > > outra pergunta é o seguinte: > eu estou filtrando um arquivo retirando as linhas que contém "|" e > necessito ainda retirar as linhas que possuem um campo vazio. > Até a parte do "|" eu fiz ... mas não consigo "grepar" o campo vazio. > cat $arquivo | awk '{print $1 $2}' | grep -v "|" > > o arquivo original é: > 1 3805.3000 14623222.7282 3824.0322 | 1938.8375 9613106.3892 > 3100.5009 | 337.2250 300369.1373 548.0594 > 2 3488.9500 12899910.9205 3591.6445 | 1779.0625 8485836.0882 > 2913.0458 | 394.3541 378363.1307 615.1122 > 3 | 2056.0650 10657926.4011 3264.6479 | 345.0095 446662.5792 > 668.3281 > 4 2395.1500 7573923.9362 2752.0762 | 1197.5750 5881227.4358 > 2425.1242 | 403.5875 411857.8703 641.7615 > 5 3640.4250 13285972.4044 3644.9927 | 1863.7000 8278214.4591 > 2877.1886 | 326.4041 253348.7635 503.3376 > 6 | 2187.1375 11898716.2496 3449.4515 | 305.3950 274575.2704 > 523.9993 > 7 3049.7500 9555864.2435 3091.2560 | 1607.5750 6153174.9558 > 2480.5594 | 286.1200 231689.1085 481.3409 > 8 2690.8550 9990945.0768 3160.8456 | 1416.5650 5937139.9383 > 2436.6247 | 277.1750 231953.6237 481.6156 > 9 3359.5175 12599418.9737 3549.5660 | 1714.3962 8214373.9095 > 2866.0729 | 527.6541 670845.0793 819.0513 > 10 3876.0000 15016463.8461 3875.1082 | 1981.4650 9505323.7970 > 3083.0705 | 394.6995 423310.0278 650.6227 > 11 3146.9250 6242632.6044 2498.5260 | 1573.4625 6027675.8231 > 2455.1325 | > 12 | | > 13 2209.9250 5495139.2506 2344.1713 | 1141.6375 3381980.1582 > 1839.0160 | 234.1866 188748.0349 434.4514 > 14 2435.2500 3321308.7756 1822.4458 | 1217.6250 3516355.7761 > 1875.1948 | 328.1458 266152.6066 515.8998 > 15 | | 324.0508 383277.1339 619.0938 > 16 4117.0750 17223157.3531 4150.0791 | 2096.0400 11469113.2536 > 3386.6079 | 483.7125 577614.8352 760.0097 > 17 3931.5750 15587941.8916 3948.1567 | 2012.5500 10065638.0535 > 3172.6389 | 538.3666 677216.6453 822.9317 > 18 3593.5300 12922503.8411 3594.7884 | 1837.6900 8137569.8555 > 2852.6426 | 494.6041 623128.9664 789.3851 > 19 3752.8000 14978281.1897 3870.1784 | 1915.6500 9493854.7291 > 3081.2099 | 386.3250 365627.9316 604.6717 > 20 2290.5750 9786021.4301 3128.2617 | 1221.1000 5547771.9194 > 2355.3708 | 399.6166 403369.8248 635.1140 > > "o arquivo grepado é:" > 1 3805.3000 1938.8375 337.2250 > 2 3488.9500 1779.0625 394.3541 > 4 2395.1500 1197.5750 403.5875 > 5 3640.4250 1863.7000 326.4041 > 7 3049.7500 1607.5750 286.1200 > 8 2690.8550 1416.5650 277.1750 > 9 3359.5175 1714.3962 527.6541 > 10 3876.0000 1981.4650 394.6995 > 11 3146.9250 1573.4625 > 13 2209.9250 1141.6375 234.1866 > 14 2435.2500 1217.6250 328.1458 > 16 4117.0750 2096.0400 483.7125 > 17 3931.5750 2012.5500 538.3666 > 18 3593.5300 1837.6900 494.6041 > 19 3752.8000 1915.6500 386.3250 > 20 2290.5750 1221.1000 399.6166 > > perceba que a linha 11 precisa ser retirada > > grato pela ajuda > > JJ.Santanna > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: [email protected] --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/shell-script/ <*> Para sair deste grupo, envie um e-mail para: [email protected] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
