[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 16:13:32 -0300 |
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