Texte em Cygwin X Implementação em Debian [RESOLVIDO]

1. Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 16/02/2012 - 11:13h

Saudações a todos.

Elaborei um script no meu computador e venho testando pelo emulador Cygwin e tudo vem funcionando muito bem. Quando fui implementar o script no servidor Debian, está tudo caindo como um castelo de cartas e com coisas q até certo ponto eu entendo como [*****]:

Um comando echo que funciona perfeitamente no cygwin, não funciona no Debian. Segue abaixo parte do script que contém o comando echo e a resposta dos comandos:

ScriptInicio

for (( VarreElemento = 1 ; VarreElemento <= 3 ; VarreElemento++ ))
do

Elemento_Nome=`awk -v LinhaElemento=$VarreElemento 'NR == LinhaElemento { print $1 }' $ArqElementos$TipoElemento"s_"$OSS_Nome.txt`

echo "# $TipoElemento: $Elemento_Nome | $VarreElemento de $Elemento_Quant."

Comandos_Quant=`awk 'END { print NR }' $ArqComandos` # Extrai a quantidade de comandos a serem executados

ScriptFim

------------------
Respostas:
Cygwin:

# HLR: HBHE01 | 1 de 4.

Debian:

| 1 de 4: HBHE01
------------------

Alguém tem alguma idéia do q possa ser???? Até onde eu estou entendendo, é alguma coisa com o a quantidade de variáveis a serem imprimidas na tela, mas eu to achando isso muito surreal.


  


2. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Alberto Monteiro
albmont

(usa Nenhuma)

Enviado em 16/02/2012 - 11:31h

Posso chutar?

É CR/LF?

Já peguei scripts que, por algum motivo, passaram por algum editor do Windows e acrescentaram um CR/LF no final das linhas, então, quando eu tento rodar no Linux, dá erro.

Pode ser que o arquivo, no Windows, tenha CR/LF no final; no Debian não tem, então o script funciona de forma diferente.

Para verificar isso, pega cada linha do script e acrescenta um comentário vazio no final:

echo "test" # comentário vazio



3. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 16/02/2012 - 11:37h

Cara, eu vou tentar.

Mas acho pouco provável q seja isso porq todo meu código tá comentado!!

Sério, to achando isso muito surreal!!!


4. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 16/02/2012 - 12:14h

Cara, pelo que entendi pode ser que a versão do bash não é a mesma.

Nem todos os terminais aceitam os mesmos tipos de sintaxe dos comandos.

Por exemplo, no Unix:

- não existe o parâmetro -x para o comando ps, no Linux sim;
- não é possível desligar a máquina com shutdown -h now, mas sim com shutdown -y -g 1;
- as interfaces de rede no Solaris geralmente são chamadas de le0 e não eth0, como no Linux.

Estou fuçando aqui para ver se encontro algo que possa ter a mesma config para os 2 bash´s ..





5. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 16/02/2012 - 13:45h

alexandregms, valeu pela dica.

Realmente a versão é diferente entre eles. Do Cygwin é a 4.1.10(4)-release enquanto a do servidor Debian é a 4.1.5(1)-release.

As versões são mesmo diferentes, mas será q essa pouca diferença causaria esse inferno todo??? O.O


6. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 16/02/2012 - 14:37h

tente executar com a opção -x. ex: sh -x seu_script ... isso mostrara o que está sendo feito em cada momento.


7. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 16/02/2012 - 16:00h

Eu estava chamando o interpretador #!/bin/bash logo no começo do programa. Pode variar muito se eu chamar o #!/bin/sh??

Já tentei fazer essa alteração (somente essa alteração) e ñ deu em nada.


8. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 16/02/2012 - 17:54h

Não vai variar nada neste caso, pois as versões estão diferentes..
Ainda não me sobrou tempo pra pesquisar sobre isso .. :-/


9. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 16/02/2012 - 18:39h

Galera, muito obrigado pela ajuda!!

Mas eu fui vítima da minha própria comididade. Como eu estava usando um emulador dentro do windows, eu editava todos os arquivos no Windows (scripts e txts que o script acessa) e rodava nesse emulador. Até aí sussa. Quando eu joguei os arquivos p/o Linux aí foi tudo p/o saco!!!!

Eu tive q converter todos os arquivos (scripts e TXTs) para o formato Unix (fiz através do vi) e funcionou tudo sussa!!! Bem, quase tudo... rs Mas boa parte do problema já foi!!! A única coisa q eu fiz p/resolver essa parte foi converter o arquivo (pelo q eu entendi o Windows insere um ^M no final de cada linha e que o Unix ñ reconhece e aí desanda o pudim todo.).

Comandos pelo vi:
vi <Nome do Arquivo>
:set fileformat=unix <enter>
:wq! <enter>

O que eu não consegui fazer até agora (depois de convertido todos os scripts e TXTs) é executar os meus scripts em awk. Tenho funções em AWK ao longo do script e estão funcionando OK, mas o problema é quando eu chamo o script desenvolvido em AWK. Ele informa a seguinte mensagem:

"Script/ConversaoArquivos/Converter_GEPP.sh: Script/ConversaoArquivos/Converter_GEPP_AWK.sh: /bin/gawk: bad interpreter: No such file or directory"

Até onde eu entendi, o script Converter_GEPP.sh tenta chamar o script Converter_GEPP_AWK.sh, mas ele dá pau na primeira linha (que chama o interpretador do script) e para tudo.

Segue o script do Converter_GEPP_AWK.sh:

#!/bin/gawk-f

BEGIN {}

{
if ( NR > PrimeiraLin && NR < UltimaLin ) {
if ( $1 == "PROP" ) {
getline
do {
TabelaSQL="xGEPP"
print "INSERT INTO "TabelaSQL" (DATA,OSS,ELEMENTO,PARAMETRO,VALUE) VALUES(\""Data"\",\""OSS_Nome"\",\""Elemento_Nome"\",\""$1"\",\""$2"\");"
getline
} while ( $1 != "" )
}
}
}
END {}

Alguém tem alguma sugestão??

Abraços!!


10. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

Enviado em 16/02/2012 - 19:13h

Altere a primeira linha do seu script para:

#!/bin/awk -f


11. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Alberto Monteiro
albmont

(usa Nenhuma)

Enviado em 17/02/2012 - 09:50h

diegoneto escreveu:

Eu tive q converter todos os arquivos (scripts e TXTs) para o formato Unix (fiz através do vi) e funcionou tudo sussa!!! Bem, quase tudo... rs Mas boa parte do problema já foi!!! A única coisa q eu fiz p/resolver essa parte foi converter o arquivo (pelo q eu entendi o Windows insere um ^M no final de cada linha e que o Unix ñ reconhece e aí desanda o pudim todo.).


Pois é, foi o que eu disse antes, o problema era mesmo o CR/LF (um deles é o control-M, o outro o control-R) que, no Windows, são interpretados como fim de linha e, no Linux, são interpretados como um caracter válido seguido do fim de linha.

A única forma de manter scripts que funcionem tanto no Windows quanto no Linux, sem se preocupar em gerenciar este problema, é terminar cada linha com um comentário, mesmo vazio.

BTW, em C (e várias outras linguagens) não tem este problema, porque o CR/LF é considerado espaço em branco e ignorado pelo compilador. Só o bash que acha que CR ou LF é um caracter válido (uma bobagem, mas não tem mais como mudar isso).



12. Re: Texte em Cygwin X Implementação em Debian [RESOLVIDO]

Diego Tavares
diegoneto

(usa Outra)

Enviado em 17/02/2012 - 09:58h

Pois é, mas acabou q o problema ñ tava no script em si, mas principalmente nos arquivos TXTs de onde ele retira a informação.

Vou dar o tópico como resolvido porq já descobri q ñ consigo acessar os scripts feitos todos em AWK porq ñ tenho o interpretador instalado na pasta bin (bem, eu espero q seja APENAS isso. rs).

Outra questão:
No script em shell (chamando o interpretador #!/bin/bash) eu chamo várias funções em AWK e elas funcionam, porém, quando eu chamo um script em awk, chamando o interpretador #!/bin/gawk -f ele ñ funciona. Qual seria o motivo disso??






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts