2013-05-22 4 views
5

i Probleme, bin in diesem Bash-Skript den Fehler Festsetzung, ich habe ernsthaft keine Ahnung, was ich falsch gemacht habe, jede Hilfe ist dank geschätztbash, Kommando nicht gefunden

[[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

Sie scheinen auf Erfolg 1 zu sein; nach Konvention, die auf einen Fehler hinweist. – chepner

Antwort

8

hinzufügen Raum nach[ und vor].

[ -d $1 ] 
^ ^
+0

Vielen Dank –

+0

Gern geschehen. – tarrsalah

+2

@JoeE: Wenn Sie schon dabei sind, sollten Sie '' '' '' '' '' '- bash's leistungsstärkere Builtins in Betracht ziehen, die zusätzliche Operatoren (= ~, <, >) bieten und die Notwendigkeit, Ihre Stringoperanden zu zitieren. – DevSolar

1

Sie müssen Leerzeichen vor und nach [ und ]. Einzelheiten finden Sie unter help [.