número excessivo de argumentos [RESOLVIDO]

1. número excessivo de argumentos [RESOLVIDO]

Iago Lira
iagolira

(usa Debian)

Enviado em 14/12/2014 - 13:55h

Pessoal eu tenho um script chamado "main.sh" que contem as seguintes linhas:

#!/bin/bash

.
.
.

if [ -e $(cat ~/user)/$version/automatic/puro/* ]
then {
rm $(cat ~/user)/$version/automatic/puro/*
}
else {
echo ""
}
fi

.
.
.

Onde $(cat ~/user é um diretório definido por mim. Mas quando executo o script, aparece a seguinte mensagem: "./main.sh: line 263: [: número excessivo de argumentos".
O script funciona normalmente, mas se alguém me ajudar a solucionar este problema fico muito grato!


  


2. Re: número excessivo de argumentos [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/12/2014 - 20:05h

Provavelmente seu diretório '$(cat ~/user)/$version/automatic/puro/' contém
mais de um arquivo. Ao receber mais de um parâmetro, o comando 'test' ('[')
reclama de uso incorreto sem matar o processo. Você poderia trocar o teste
atual por:

if find $(cat ~/user)/$version/automatic/ -type d -name puro -not -empty; then
...
fi

ou ainda, se esse script não roda com grande frequência, nem colocar teste
algum, remover e recriar o diretório é bem mais simples.




3. Re: número excessivo de argumentos [RESOLVIDO]

Iago Lira
iagolira

(usa Debian)

Enviado em 14/12/2014 - 20:38h

textmode escreveu:

Provavelmente seu diretório '$(cat ~/user)/$version/automatic/puro/' contém
mais de um arquivo. Ao receber mais de um parâmetro, o comando 'test' ('[')
reclama de uso incorreto sem matar o processo. Você poderia trocar o teste
atual por:

if find $(cat ~/user)/$version/automatic/ -type d -name puro -not -empty; then
...
fi

ou ainda, se esse script não roda com grande frequência, nem colocar teste
algum, remover e recriar o diretório é bem mais simples.




Funcionou perfeitamente! Muito obrigado [quote] textmode !


4. Re: número excessivo de argumentos [RESOLVIDO]

Sergio Abreu
sergioabreu

(usa Ubuntu)

Enviado em 19/01/2017 - 16:36h

Isso pode ocorrer qdo não cercamos uma váriável em teste

if [ -z $t ]; then # <--- problematico

if [ -z "$t" ]; then # <--- seguro e correto se t for string pois pode ter espaços!



5. bash número excessivo de argumentos

Charles souza
chaurock

(usa Kali)

Enviado em 28/08/2017 - 18:03h

Ola amigos estou com esse mesmo problema, gostaria de um passo a passo mais detalhado se possível, uso o kali linux "iniciando"






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts