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:
[EMAIL PROTECTED]/$ bash --version
GNU bash, version 3.2.0(1)-release (i686-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
[EMAIL P
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 se
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,
Em Qua 11 Jul 2007, João Augusto escreveu:
Olá João Augusto
Para comparar cadeias de caracteres o operador -eq
não pode ser usado. Pois ele fornece o seguinte erro
[: 16: ELF: bad number
[: 16: ELF: bad number
[: 16: ELF: bad number
[: 16: Bourne: bad number
[: 16: ELF: bad number
[: 16: empty: b
Poderia ter feito assim
if [ ${tipo} -eq Bourne ]
Clássico!
[]'s
Em 10/07/07, Salviano A. Leão <[EMAIL PROTECTED]> escreveu:
>
> Em Ter 10 Jul 2007, mop escreveu:
> Olá mop
>
> Bom com com a separacao
>
> No caso em que uso: if [ "$tipo" == Bourne ]
> obtenho o seguite erro
> [: 16: ==: un
Em Ter 10 Jul 2007, mop escreveu:
Olá mop
Bom com com a separacao
No caso em que uso: if [ "$tipo" == Bourne ]
obtenho o seguite erro
[: 16: ==: unexpected operator
No caso em que uso : if [ "$tipo" == "Bourne" ]
obtenho o mesmo erro
[: 16: ==: unexpected operator
Descobri que o correto eh:
Em Ter 10 Jul 2007, Tiago Barcellos Peczenyj escreveu:
> #!/bin/bash
> AWKCMD='/Bourne/{print $1}'
> SEDCMD='1s|/sh|/bash|;2aexport LC_ALL=C;'
> find /usr/local/bin | xargs file | awk -F ':' "${AWKCMD}" | xargs sed
> -i.old"${SEDCMD}"
Olá Tiago
Se não houver um espaco entre -i.old e "${SEDCMD}"
Olhei por alto, o único problema que notei é que você emendou tudo
colocando um única string no if. Você fez isto:
[ "$tipo"=="Bourne" ]
Quando deveria ter feito isto:
if [ "$tipo" == "Bourne" ]
Repare que tem de existir: string1 espaco comparador espaço string2.
Recomendo que acima do seu if es
Em Ter 10 Jul 2007, mop escreveu:
> if [ "$tipo" = Bourne ]
Tentei, entretanto, ele problema persiste. É como
se não houvesse o if
Salviano, alem da dica do mop, da uma olhada se esse one-liner funciona no
teu caso:
#!/bin/bash
AWKCMD='/Bourne/{print $1}'
SEDCMD='1s|/sh|/bash|;2aexport LC_ALL=C;'
find /usr/local/bin | xargs file | awk -F ':' "${AWKCMD}" | xargs sed
-i.old"${SEDCMD}"
Vamos destrinchar esse one liner:
1) o fi
Experimente assim:
if [ "$tipo" = Bourne ]
Olá, a todos estou com dificuldades em um
script muito simples, entretanto, não localizei o
problema.
Tenho no diretorio /usr/locl/bin os seguites arquivos:
-rwxr-xr-x 1 salviano salviano 1597856 2007-07-10 13:21 codecov
-rwxr-xr-x 1 salviano salviano 22143225 2007-07-10 13:21 fortcom
-rwxr-xr
12 matches
Mail list logo