shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Shebang


From: Julio C. Neves
Subject: Re: [shell-script] Shebang
Date: Sat, 9 Jan 2010 10:42:25 -0200

Fala Eri,
diversas linguagens tem um cmd "não faça nada". Exs:
NOP - No OPerate - Assembler;
NEXT SENTENCE - COBOL

Estes cmds são usados para cumprir formalidades de sintaxe. Ex:
if cd dir 2> /dev/null
then
    :
else
    mkdir dir
    cd dir
fi

Isto é na primeira linha vc testa se existe o diretório e se existir, vc já
terá feito o cd para dentro dele, desta forma o then perdeu o sentido. Mas
como a sintaxe do if obriga a existência do then, então o colocamos com o
cmd : que não faz nada e sempre volta verdadeiro (true).

Escrevi isso tudo por 2 motivos:
- Em diveras linguagens vc pode comentar um bloco de prg inteiro (como o
famoso /*...*/). Sempre fiquei encafifado, que no shell vc tinha de colocar
um # antes de cada linha do bloco. Atualmente tenho feito o seguinte:
: << fimdobloco
    bloco
     de
    programa
    a
    comentar
fimdobloco
Entendeu a brincadeira? Por enquanto essa construção tem funcionado...

- A outra coisa que queria comentar, é que o uso do : nos seus scripts, não
é uma coisa arcaica não. Programo em shell há muito tempo (provavelmente
antes dos seus scripts terem sidos escritos) e nunca vi isso.

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Em SP ligue (11)2125-4747;
- Em DF ligue (61) 3223-3000;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.



2010/1/8 Eri Ramos Bastos <address@hidden>

>
>
> Olá, lista.
>
> No meu atual emprego tenho que dar manutenção para scripts legados dos
> antigos sysadmins e também alguns desenvolvidos por nossos
> programadores.
> Porém além do código horrivel de ler, todos os scripts começam com ":"
> ao invés do shebang (#!/bin/sh ou #!/bin/bash).
>
> Nunca vi isso na minha vida e estou em dúvida se quem fez o script era
> extremamente inteligente ou estúpido.
>
> Exemplo:
>
> # head script.sh
> :
>
> VER=".06"
> LASTMODIFIED="2006-07-19"
>
> TAPEDEV="$1"
> if [ "${TAPEDEV:0:5}" != "/dev/" ]
> then
>
> Nenhum dos script é executável e todos são chamados assim: /bin/bash
> script.sh
>
> Estou perdendo alguma coisa no meu raciocínio? Me parece algo tão sem
> noção que estou começando a achar que eu que estou errado.... :)
>
> []'s
> Eri Ramos Bastos
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]