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: mop
Subject: Re: [shell-script] Ajuda em script para separar arquivo binario de script
Date: Wed, 11 Jul 2007 17:49:26 -0300

Gostei do teste São Tomé numérico. :)
Apenas diria que sob teste não há atribuição, trata-se apenas de uma
string com um = no meio.

Segundo São Bash:
web@k7/$ bash --version
GNU bash, version 3.2.0(1)-release (i686-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
web@k7/$ [ ];echo $?;[ 0 ];echo $?;[ = ];echo $?;[ a=p ];echo $?;echo a=$a
1
0
0
0
a=
web@k7/$

Legal essa opção em linha para a turma brincar rapidinho.


------------------------------------------------------------------
>From: "Julio C. Neves" <private>
>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
>>
>> 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
>
>
>-- 
>Abraços,
>Julio
>http://www.julioneves.com - Um livro sobre Bash completo e on-line
>:wq



reply via email to

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