erro de sintaxe próximo do `token' não esperado `(' [RESOLVIDO]

1. erro de sintaxe próximo do `token' não esperado `(' [RESOLVIDO]

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 12/12/2015 - 14:08h

Olá, pessoal desenvolvi um script muito simples para deletar tudo de uma pasta e deixar somente arquivos .jpg.
O comando que deleta tudo pelo terminal funciona normal rm -rf ./!(*.jpg) porem quando coloco dentro do script da erro.
a ideia seria digitar soimg.sh em qualquer diretorio e o script identificar onde vc está e deletar tudo e deixar somente as imagens
estou usando xubuntu 14.04

linha do erro

/bin/soimg.sh: command substitution: linha 10: erro de sintaxe próximo do `token' não esperado `('
/bin/soimg.sh: command substitution: linha 10: ` rm -rf ./!(*.jpg) '


#!/bin/bash
echo " Script Deleta Tudo e Deixa Somente Imagens "
echo " "
RESULT=` ls | grep jpg | wc -l `
DIR=` pwd `
cd $DIR
echo "$RESULT"
RESULT2=`ls | grep jpg `
echo "$RESULT2"
COMANDO=` rm -rf ./!(*.jpg) `
echo ""
if [ "$RESULT" -gt "0" ];
then
$COMANDO
echo " Total De $RESULT Imagens "
else
echo ""
fi
exit
done



  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/12/2015 - 20:57h

Estranho mesmo....
Qual erro que apresentou?
Sei o que ocorreu . . .
O script termina na linha
EXECUTA
##########################################################################################################
Que fica acima da linha com ##### . . .
Segue aqui sem esses ####
O EXECUTA chama a FUNÇÃO EXECUTA
Sem ele não faz nadica de nada . . . :)

#!/bin/bash

INFODIR() {
read -p " INFORME o DIRETóRIO: " DIR
[ $DIR ] || INFODIR
}

SimNao() {
echo -e "\n DESEJA CONTINUAR?\n"
read -p " [S/N]: " -e -n1 RESP
[[ $RESP != +(s|S|n|N) ]] && SimNao
[[ $RESP == +(n|N) ]] && { echo -e "\n SAINDO . . . \n" ; exit 0 ; }
}

EXECUTA() {
echo -e "\n DEIXA SOMENTE IMAGENS \"jpg\"\n"
INFODIR
NARQS=$(ls -1 $DIR|egrep -vic 'jpg$')
if (($NARQS>0));then
ls -1 $DIR|egrep -vi '.jpg$|.jpeg$'|sed 's/^/ /'
echo -e "\n OS ARQUIVOS ACIMA SERãO EXCLUíDOS"
SimNao
else
echo -e "\n NãO EXISTEM ARQUIVOS DE IMAGEM\n"
fi
if ls -1 $DIR/*.jpg 1> /dev/null 2> /dev/null ;then
for X in $(ls -1 $DIR|egrep -vi 'jpg$|.jpeg$');do
rm "$DIR/$X"
done
else
echo -e "\n NãO EXISTEM ARQUIVOS JPG\n"
fi
echo -e "\n Total De Imagens: $(ls -1 $DIR|egrep -ci '.jpg$|.jpeg$')\n"
}
EXECUTA

#FIM_do_SCRIPT

Abç.,
Marcelo



3. RESP: erro de sintaxe próximo do `token' não esperado `('

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/12/2015 - 17:50h

Boa tarde conectadohost .
Encontrei alguns erros . . .
Refiz tudo ....
Preserva jpeg também.
Segue:
############################################################################################################
#!/bin/bash

INFODIR() {
read -p " INFORME o DIRETóRIO: " DIR
[ $DIR ] || INFODIR
}

SimNao() {
echo -e "\n DESEJA CONTINUAR?\n"
read -p " [S/N]: " -e -n1 RESP
[[ $RESP != +(s|S|n|N) ]] && SimNao
[[ $RESP == +(n|N) ]] && { echo -e "\n SAINDO . . . \n" ; exit 0 ; }
}

EXECUTA() {
echo -e "\n DEIXA SOMENTE IMAGENS \"jpg\"\n"
INFODIR
NARQS=$(ls -1 $DIR|egrep -vic 'jpg$')
if (($NARQS>0));then
ls -1 $DIR|egrep -vi '.jpg$|.jpeg$'|sed 's/^/ /'
echo -e "\n OS ARQUIVOS ACIMA SERãO EXCLUíDOS"
SimNao
else
echo -e "\n NãO EXISTEM ARQUIVOS DE IMAGEM\n"
fi
if ls -1 $DIR/*.jpg 1> /dev/null 2> /dev/null ;then
for X in $(ls -1 $DIR|egrep -vi 'jpg$|.jpeg$');do
rm "$DIR/$X"
done
else
echo -e "\n NãO EXISTEM ARQUIVOS JPG\n"
fi
echo -e "\n Total De Imagens: $(ls -1 $DIR|egrep -ci '.jpg$|.jpeg$')\n"
}

EXECUTA
##########################################################################################################
Seguindo as regras do VOL:
Se atender sua necessidade, marque como resolvido, por favor.
Efetuei vários testes, funcionando corretamente.
Debian 8.2 LXDE

Att.:
Marcelo




4. RESP: ERRO DE SINTAXE PRÓXIMO DO `TOKEN' NÃO ESPERADO `('

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 12/12/2015 - 18:07h

Olá,
Obrigado pela ajuda, mas infelizmente não funcionou
o mais estranho é que nem executou o script, acredito que muda algo dependendo da distribuição, mas ja me ajudou muito, vou tentar adaptar uma parte do seu script com o meu e posto como ficou. valeu por enquanto.


msoliver escreveu:

Boa tarde conectadohost .
Encontrei alguns erros . . .
Refiz tudo ....
Preserva jpeg também.
Segue:
############################################################################################################
#!/bin/bash

INFODIR() {
read -p " INFORME o DIRETóRIO: " DIR
[ $DIR ] || INFODIR
}

SimNao() {
echo -e "\n DESEJA CONTINUAR?\n"
read -p " [S/N]: " -e -n1 RESP
[[ $RESP != +(s|S|n|N) ]] && SimNao
[[ $RESP == +(n|N) ]] && { echo -e "\n SAINDO . . . \n" ; exit 0 ; }
}

EXECUTA() {
echo -e "\n DEIXA SOMENTE IMAGENS \"jpg\"\n"
INFODIR
NARQS=$(ls -1 $DIR|egrep -vic 'jpg$')
if (($NARQS>0));then
ls -1 $DIR|egrep -vi '.jpg$|.jpeg$'|sed 's/^/ /'
echo -e "\n OS ARQUIVOS ACIMA SERãO EXCLUíDOS"
SimNao
else
echo -e "\n NãO EXISTEM ARQUIVOS DE IMAGEM\n"
fi
if ls -1 $DIR/*.jpg 1> /dev/null 2> /dev/null ;then
for X in $(ls -1 $DIR|egrep -vi 'jpg$|.jpeg$');do
rm "$DIR/$X"
done
else
echo -e "\n NãO EXISTEM ARQUIVOS JPG\n"
fi
echo -e "\n Total De Imagens: $(ls -1 $DIR|egrep -ci '.jpg$|.jpeg$')\n"
}

EXECUTA
##########################################################################################################
Seguindo as regras do VOL:
Se atender sua necessidade, marque como resolvido, por favor.
Efetuei vários testes, funcionando corretamente.
Debian 8.2 LXDE

Att.:
Marcelo





---> A arte de programar consiste na arte de organizar e dominar a complexidade.
---> Dijkstra <---


5. RESP: ERRO DE SINTAXE PRÓXIMO DO `TOKEN' NÃO ESPERADO `('

marcio mendes mendes
conectadohost

(usa XUbuntu)

Enviado em 12/12/2015 - 21:44h

Olá,
perfeito meu rapaz era isso mesmo, funcionou que é uma beleza, top demais
testei em uma pasta http://i.imgur.com/SQHFfz1.png e agora vou fazer na pasta que eu queria
valeu, to te devendo uma.kkk

msoliver escreveu:

Estranho mesmo....
Qual erro que apresentou?
Sei o que ocorreu . . .
O script termina na linha
EXECUTA
##########################################################################################################
Que fica acima da linha com ##### . . .
Segue aqui sem esses ####
O EXECUTA chama a FUNÇÃO EXECUTA
Sem ele não faz nadica de nada . . . :)

#!/bin/bash

INFODIR() {
read -p " INFORME o DIRETóRIO: " DIR
[ $DIR ] || INFODIR
}

SimNao() {
echo -e "\n DESEJA CONTINUAR?\n"
read -p " [S/N]: " -e -n1 RESP
[[ $RESP != +(s|S|n|N) ]] && SimNao
[[ $RESP == +(n|N) ]] && { echo -e "\n SAINDO . . . \n" ; exit 0 ; }
}

EXECUTA() {
echo -e "\n DEIXA SOMENTE IMAGENS \"jpg\"\n"
INFODIR
NARQS=$(ls -1 $DIR|egrep -vic 'jpg$')
if (($NARQS>0));then
ls -1 $DIR|egrep -vi '.jpg$|.jpeg$'|sed 's/^/ /'
echo -e "\n OS ARQUIVOS ACIMA SERãO EXCLUíDOS"
SimNao
else
echo -e "\n NãO EXISTEM ARQUIVOS DE IMAGEM\n"
fi
if ls -1 $DIR/*.jpg 1> /dev/null 2> /dev/null ;then
for X in $(ls -1 $DIR|egrep -vi 'jpg$|.jpeg$');do
rm "$DIR/$X"
done
else
echo -e "\n NãO EXISTEM ARQUIVOS JPG\n"
fi
echo -e "\n Total De Imagens: $(ls -1 $DIR|egrep -ci '.jpg$|.jpeg$')\n"
}
EXECUTA

#FIM_do_SCRIPT

Abç.,
Marcelo





---> A arte de programar consiste na arte de organizar e dominar a complexidade.
---> Dijkstra <---


6. RESP: erro de sintaxe próximo do `token' não esperado `('

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/12/2015 - 22:58h

Opá, Marcio.
Então agora funcionou!!!!
Legal, muito bom.
Qualquer dúvida estamos ai...
Como você disse, "ta me devendo uma", marca como melhor resposta e coloca concluído, que esta tudo certo.... :)

Abç.:
Marcelo

Seguindo as regras do VOL:
Se atender sua necessidade, marque como resolvido, por favor.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts