2013-05-22 34 views
5

Ho problemi a fissare l'errore in questo script bash, ho seriamente non hanno idea di che cosa ho fatto di sbagliato, ogni aiuto è apprezzato graziebash, non comando trovato

[[email protected] ~]$ sh ListFich.sh test 
Synthese, Question 2 
ListFich.sh: line 9: [-d: command not found 
Il n'y a aucun repertoire qui se nomme test 
ListFich.sh: line 15: [-f: command not found 
Il n'y a aucun fichier qui se nomme test 
[[email protected] ~]$ 
#!bin/bash 

echo "Synthese, Question 2" 

if test $# -eq 0; then 
    echo "Argument Manquants" 
    exit 1 
else 
    if [-d $1];then 
     ls -d $1 
     exit 1 
    else 
     echo "Il n'y a aucun repertoire qui se nomme $1" 
    fi 
    if [-f $1]; then 
     if [ -s $1]; then 
      ls -l $1 
      exit 1 
     else 
      ls -l $1 
      echo "Le fichier $1 est vide" 
      exit 1 
     fi 
    else 
     echo "Il n'y a aucun fichier qui se nomme $1" 
    fi 
fi 
+2

Sembra che tu stia uscendo 1 in caso di successo; per convenzione che indica il fallimento. – chepner

risposta

8

Aggiungi un spazio dopo il[ e prima del].

[ -d $1 ] 
^ ^
+0

Grazie mille –

+0

Prego. – tarrsalah

+2

@JoeE: Mentre ci sei, considera l'uso di '[[' e ']]' - i buildin più potenti di bash, che forniscono operatori aggiuntivi (= ~, <, >) e rimuovi la necessità di citare i tuoi operandi di stringa. – DevSolar

1

È necessario spazi prima e dopo [ e ]. Vedi help [ per i dettagli.