#!/bin/bash ou #!/bin/sh ?

13. Re: #!/bin/bash ou #!/bin/sh ?

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 17/03/2008 - 14:49h

Diede: são MUITAS diferenças!!

Acontece que talvez a maioria use sintaxe tradicional, que funciona em qualquer shell. Tem diferença até mesmo na VERSÃO de bash!

Vou citar apenas algumas de sh para bash:

if [ $A == "teste" ]
Não funciona em sh. sh espera APENAS um = aqui e não dois. Já o bash aceita ambos.

O sh nao tem TODOS os comandos de substituição de strings que o bash tem:

A=35451565
echo ${A/5/A}
echo ${A//5/A}

O primeiro troca a primeira ocorrência de 5 por A. O segundo troca TODAS as ocorrências de 5 por A.

Ambos são ERROS DE SINTAXE em sh!

Isto são dois exemplos rápidos que pensei.
Fora a parte de arrays que o bash tem:

VET[0]=34
VET[1]=45

echo ${VET[0]}
echo ${VET[1]}

Que também são um total mistério para o sh!

Envim, são coisas COMPLETAMENTE diferentes!
O que acontece é que muitos aprenderam a programar em SHELL no tempo do sh e nunca olharam os avanços que o bash traz em termos de poderes.



  


14. Re: #!/bin/bash ou #!/bin/sh ?

Jefferson Diego
Diede

(usa Debian)

Enviado em 17/03/2008 - 14:54h

Valeu pelo toque!
Confesso que nem sabia que era possível usar arrays com com o Shell...


15. Advanced Bash-Scripting Guide

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 17/03/2008 - 15:09h

http://tldp.org/LDP/abs/html/
ou
http://tldp.org/LDP/abs/abs-guide.pdf

Se você quer um bom motivo para imprimir mais de 500 páginas, eis ele.

Este guia EU CONSIDERO a bíblia sagrada de bash. Avançado MESMO!!!!

A parte que fala de arrays:
http://tldp.org/LDP/abs/html/arrays.html#QFUNCTION


16. Re: #!/bin/bash ou #!/bin/sh ?

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 17/03/2008 - 15:11h

PUXA!

Pior que nem eu tinha visto que o manual de Bash que citei está em versão NOVÍSSIMA, de ONTEM, 16/Março!!

Download nele...


17. Re: #!/bin/bash ou #!/bin/sh ?

Leandro Santiago
tenchi

(usa Slackware)

Enviado em 17/03/2008 - 15:49h

Ué Elgio. Aqui o meu pc o sh e bash funcionaram da mesmíssima forma, sem estas limitações que vc citou.

Achei estranho...

Ah, e por falar nisso, achei um site com o código do sh original:
http://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/

Script para baixar o código:
#!/bin/bash

mkdir sh -p
cd sh

SOURCE=$(lynx -dump http://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/ | egrep '^.{4}\.' | cut -c7- | rev | cut -c6- | rev )

for i in $SOURCE
do
wget $i
done

E executando make. Mas o código é tão antigo que não compila com o gcc atual ;-) Mas é legal para dar uma "bizóiada" hauahua




18. NÃO PODE!

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 17/03/2008 - 16:47h

estranho tenchi!

Tem certeza que tu fez os dois códigos:

#!/bin/sh
A=35451565
echo ${A/5/A}
echo ${A//5/A}

e...

#!/bin/bash
A=35451565
echo ${A/5/A}
echo ${A//5/A}


E salvou isto em arquivo, dando permissão de execução? Não vale fazer:

bash script.sh

Pois ai tu forçou o bash. Tem que dar um chmod u+x e chamar como se fosse um executável!

Pra mim, no meu UBUNTU, com bash 3 ele dá ERRO DE SINTAXE quando tem /bin/sh!


19. INACREDITAVEL

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 17/03/2008 - 16:50h

Tche, este lance do sh ser link para bash é SUPER PADRÃO!!! To tão acostumado com isto que nunca verifico.

Mas PASMEM, no meu Ubuntu, para tornar aida MAIS CONFUSO, estranho e BIZARRO:

$ file `which sh`
/bin/sh: symbolic link to `dash'

$ file `which dash`
/bin/dash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.0, dynamically linked (uses shared libs), for GNU/Linux 2.6.0, stripped


DASH???!!!!!!!

Bom, isto não muda o que eu disse de que sh tem sintaxe DIFERENTE que o bash, mas muda quando o lance é link para o bash!



20. tsctsctsctsc...

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 17/03/2008 - 16:54h

Ubuntu 6.10 (que ainda uso no meu note): sh é link para um tal de dash. Dá o erro de sintaxe.

Ubuntu 7.10: sh é link para bash (como deveria ser) e NÃO DÁ ERRO DE SINTAXE!

Ubuntu, Ubuntu... Sempre fazendo algumas lambanças pra confundir a gente (como o uso do sudo, a falta do inittab, entre outros).

Foi mal...
Mas vale o aviso: sh e bash são diferentes pois em algumas distros o sh NÃO É LINK para bash!


21. Re: #!/bin/bash ou #!/bin/sh ?

Perfil removido
removido

(usa Nenhuma)

Enviado em 22/03/2008 - 18:57h

elgio Valeu pelo link ele tá me dando uma mão que nem imagina. Obrigado.


22. Re: #!/bin/bash ou #!/bin/sh ?

Jefferson Diego
Diede

(usa Debian)

Enviado em 24/03/2008 - 14:28h

http://tldp.org/LDP/abs/abs-guide.pdf
Já tinha baixado esse arquivo há um tempo... muito bom!
Foi lá que, por exemplo eu descobri a variável $RANDOM


23. Re: #!/bin/bash ou #!/bin/sh ?

Alexandre
AlexPinto

(usa Ubuntu)

Enviado em 24/02/2010 - 10:46h

Pelo que li, resumindo, usar #!bin/bash é muito melhor, mais viável.
Ele possui muito mais do que o #!bin/sh precisa para programar.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts