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

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

Re: [shell-script] Ajuda em script para separar arquivo binario de scrip


From: Julio C. Neves
Subject: Re: [shell-script] Ajuda em script para separar arquivo binario de script
Date: Wed, 11 Jul 2007 16:51:42 -0300

João e Salviano,
o cmd test com a opção -eq é usada para teste numérico e o sinal de igual e
usado para comparações ascii. Veja:
Prompt> [ 01 = 1 ]; echo $?
1
Prompt> [ 01 -eq 1 ]; echo $?
0

Devemos tb levar em consideração que o shell interpreta duas cadeias de
caracteres com um sinal de igual separando as duas e sem nenhum espaço em
branco como uma atribuição. Como toda atribuição volta verdaderiro, veja o
que acontece:

Prompt> tipo=Julio
Prompt> [ $tipo=Salviano ]; echo $?
0
Prompt> [ $tipo = Salviano ]; echo $?
1

Abraços,
Julio
:wq



Em 11/07/07, mop <address@hidden> escreveu:
>
> Como esta é uma lista de shell não custa reforçar, mas não pesquisei, vai
> no
> "intuitômetro" da minha experiência, exclusivamente com bash:
>
> 1. -eq é para comparar números exclusivamente
>
> 2. [ ${tipo} = "Bourne" ] somente deve ser usado quando a variável tipo
> não
> puder ser vazia ou contendo espaços, caso contrário haverá erro. Não há
> nenhuma
> necessidade de aspas nessa string FIXA E SEM ESPAÇOS à direita
>
> 3. [ "${tipo}" = Bourne ] a forma mais econômica é essa, ou melhor, sem as
> chaves, que neste caso, não vejo necessidade delas, ja que a variável tipo
> não está em meio a uma string onde o shell não teria como identificá-la,
> como em: echo abc${tipo}123
>
> 4. Para prevenir o vazio à esquerda do comparador costumo fazer:
> [ "$tipo" = Bourne ] ou [ _$tipo = _Bourne ]
>
> A segunda solução não serve caso $tipo possa conter espaços, por exemplo,
> tipo='shell script', quer dizer, o mais garantido é a opção com aspas. Se
> tipo nunca contiver espaços e nunca for vazio é possível simplificar para
> [ $tipo = Algo ]
> Em resumo, ratificando, a solução 100%, que cobre todos os casos com
> strings
> é:
> [ "$tipo" = Algo ]
> Como o que está à direita neste caso é fixo, na hora que se escreve já é
> possível saber se são necessárias aspas ou não.
>
> Não é preciso um script para experimentar isso. Basta a linha de comando
> do
> shell:
> shell-prompt> tipo="1 2 3"; [ "$tipo" = 2 ]&&echo igual||echo diferente
>
> Daí é só brincar com as possibilidades, com um mínimo de trabalho, usando
> a
> magnífica tecla seta para cima. (don't be root :)
> Não esquecer de fazer "tipo" vazio, com espaços somente, com espaços e
> caracteres, etc.
>
> Pode setar na linha de comando:
> set -x
> Para o shell mostrar visualmente as linhas de comando que está executando.
> Para retornar ao normal:
> set +x
>
> É isso, espero que os novatos aproveitem.
> É muito bacana brincar com um shell a la "unix".
> Não mostrem para as crianças, pois poderão achar muito mais legal que
> brincar
> de clique-clique e ficar viciadas. :)
>
> PS
> Isto pode não valer inteiramente em outro shell
>
>
>
> ---------------------------------------------------------------------
> 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: address@hidden
> ---------------------------------------------------------------------
> 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
>
>
>


-- 
Abraços,
Julio
http://www.julioneves.com - Um livro sobre Bash completo e on-line
:wq


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



reply via email to

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