Erro no if ao consultar se arquivo existe

1. Erro no if ao consultar se arquivo existe

Luis
lfmsilva

(usa Outra)

Enviado em 02/03/2019 - 11:41h

Bom dia!
Estou iniciando em Shell Script e estou com uma duvida. Estou tentando copiar um arquivo mas preciso saber se o arquivo termina com ".csv" se ele terminar é para copiar somente este arquivo se não ele deve copiar o arquivo sem extensão com mesmo nome porem quando executo meu código ele retorna com o erro line 5: [: faltando `]' e no final ele copia sempre os dois arquivos tanto o .csv quando o que esta sem extensão.

Código que estou utilizando

#!/bin/bash
DIR=/pasta/a
FILE=arquivo.*.csv
cd /pasta/a
if [ -e $DIR$FILE];
then
echo "Existe arquivo .csv"
cp arquivo.*.csv /pasta/b

else
echo "não existe arquivo .csv"
cp arquivo.* /pasta/b
fi



  


2. Re: Erro no if ao consultar se arquivo existe

Slackjeff
slackjeff

(usa Slackware)

Enviado em 02/03/2019 - 12:15h

Fala champs.
O teste na abertura do colchetes precisa ter espaço e antes de fecha tbm
[ -e $DIR$FILE]

Correto
[ -e $DIR$FILE ];

I'M ROOT!

Slackware user since ~2008
Meu canal no youtube:
https://www.youtube.com/SlackJeff

Meu Site:
https://www.slackjeff.com.br/

Meus Programas estão aqui:
https://notabug.org/jeffersonrocha








3. Re: Erro no if ao consultar se arquivo existe

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/03/2019 - 18:28h


lfmsilva escreveu:

Bom dia!
Estou iniciando em Shell Script e estou com uma duvida. Estou tentando copiar um arquivo mas preciso saber se o arquivo termina com ".csv" se ele terminar é para copiar somente este arquivo se não ele deve copiar o arquivo sem extensão com mesmo nome porem quando executo meu código ele retorna com o erro line 5: [: faltando `]' e no final ele copia sempre os dois arquivos tanto o .csv quando o que esta sem extensão.

Código que estou utilizando

#!/bin/bash
DIR=/pasta/a
FILE=arquivo.*.csv
cd /pasta/a
if [ -e $DIR$FILE];
then
echo "Existe arquivo .csv"
cp arquivo.*.csv /pasta/b

else
echo "não existe arquivo .csv"
cp arquivo.* /pasta/b
fi


Boa Noite, segue sugestão...
Adapte a sua necessidade.
#!/bin/bash
FILE="arquivo.csv"
ARQ=$(ls -1 ${FILE} 2>/dev/null)
if [[ ${ARQ} ]];then
echo -e "\n OKAY, a extensão é csv\n Copie o arquivo"
#COMANDO PARA COPIAR#
else
ARQ=$(ls -1 arquivo.* 2>/dev/null)
NR=$(awk 'END {print NR}' <<< "${ARQ}")
if [[ ${ARQ} ]];then
echo -e " Extensão: "$(sed 's/^.*\.//' <<< $ARQ|paste -sd "/")"\n Copie o arquivo sem a extensão\n Encontrado $NR Arquivo(s):\n$ARQ"
#COMANDO PARA COPIAR#
#ARQUIVO SEM A EXTENSÃO
#ARQ=$(sed 's/\..*//' <<< $ARQ)
fi
fi


att.:
Marcelo Oliver







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts