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

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

Re: [shell-script] Re: Arquivo não encontrado


From: Thomaz de Oliveira dos Reis
Subject: Re: [shell-script] Re: Arquivo não encontrado
Date: Wed, 5 Oct 2011 10:10:50 -0300

Isso acontece pois quando você executa

cat 'arquivo'

o shell resolve o 'arquivo' e retorna pro cat apenas arquivo

se dentro do $var tiver 'arquivo' o shell resolve o $var para 'arquivo' e
manda para o cat 'arquivo'

O mais correto nesse problema seria executar o eval, no qual ele verifica os
parametros mesmo depois de pegar as variáveis..

veja o exemplo abaixo:

thor27@thor27-mj:~$ echo ola mundo > arquivo
thor27@thor27-mj:~$ cat arquivo
ola mundo
thor27@thor27-mj:~$ cat 'arquivo'
ola mundo
thor27@thor27-mj:~$ var=\'arquivo\'
thor27@thor27-mj:~$ echo $var
'arquivo'
thor27@thor27-mj:~$ cat $var
cat: 'arquivo': Arquivo ou diretório não encontrado
thor27@thor27-mj:~$ eval cat $var
ola mundo
thor27@thor27-mj:~$


abraços!

2011/10/5 Cleriston Martinelo <address@hidden>

> **
>
>
> Descobri que é a opção -o do getopt, pois ela insere aspas simples nos
> argumentos.
> o engraçado é que cat 'arquivo' na linha de comando funciona, mas o cat
> $varivavelcomarquivo no script não funciona
>
>
> 2011/10/4 Cleriston Martinelo <address@hidden>
>
> > Prezados boa noite.
> >
> >
> > No script abaixo (ainda não terminado) ele não consegue
> > achar o arquivo passado por parâmetro.
> > Fiz o mesmo teste passando como parâmetro o caminho absoluto do arquivo,
> > mas mesmo assim na condicional -f ou no "cat" ele dá que o arquivo não
> > existe.
> > Teste a variável $log e o conteúdo da mesma está correto. Onde estou
> > comendo bronha?
> >
> > #!/bin/bash
> >
> > argumentos=$(getopt -o f:i:rt -- "$@")
> >
> > if [ $? -ne 0 ]; then
> >
> > echo Erro de parametros
> >
> > exit 1
> >
> > fi
> >
> > echo $argumentos
> >
> > set -- $argumentos
> >
> > while [ $# -ne 0 -a "$1" != "--" ]; do
> >
> > echo processando $1
> >
> > case "$1" in
> >
> > -f) recebeu_f=1
> >
> > arquivo="$2"
> >
> > shift;;
> >
> > -i) recebeu_i=1
> >
> > ip=$2
> >
> > shift;;
> >
> > -r) recebeu_r=1;;
> >
> > -t) recebeu_t=1;;
> >
> > esac
> >
> > shift
> >
> > done
> >
> > log="$2"
> >
> > #cat $log
> >
> > [ -f "$log" ] || echo "$log arquivo não existe"; exit 1
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



reply via email to

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