2017-08-09 3 views
0

Ich habe ein Bash-Skript, das die Erstellung einiger SVN-Ordner automatisiert. Dabei wird ein temporäres Verzeichnis erstellt. Wenn ich versuche, -rf Befehl, die Temp-Verzeichnis mit dem rm zu löschen, erhalte ich die folgende Fehlermeldung ...rm: kann '-rf' nicht löschen: Keine solche Datei oder kein Verzeichnis

rm: cannot remove '–rf': No such file or directory 

Es scheint zu denken, dass „-rf“ ist ein Dateiname. Der Befehl funktioniert in der Befehlszeile einwandfrei.

Hier ist mein Skript ...

#!/bin/bash 

if [ $# -lt 1 ]; then 
    echo "Usage: $0 reponame1 reponame2 ..." 

else 
    for var in "[email protected]" 
    do 
     REPONAME=$var 

     mkdir -p ~/temp-$REPONAME/branches 
     mkdir ~/temp-$REPONAME/tags 
     mkdir ~/temp-$REPONAME/trunk 

     svnadmin create $REPONAME 
     svn import ~/temp-$REPONAME svn+ssh://[email protected]/home/username/svnrepos/$REPONAME -m "Initial structure" 

     rm –rf ~/temp-$REPONAME/ 
    done 
fi 

Und hier ist der Ausgang

$ ./mkrepo.sh mysvnrepo 
[email protected]'s password: 
[email protected]'s password: 
Adding   /home/username/temp-mysvnrepo/branches 
Adding   /home/username/temp-mysvnrepo/tags 
Adding   /home/username/temp-mysvnrepo/trunk 
Committing transaction... 
Committed revision 1. 
rm: cannot remove '–rf': No such file or directory 
rm: cannot remove '/home/username/temp-mysvnrepo/': Is a directory 

Antwort

8

Sie es geschafft, eine Unicode "EN DASH" (U + 2013), die von anerkannten nicht eingeben rm als einen normalen Bindestrich "-" (U + 002D) so rm denkt, es ist der Beginn eines Dateinamens und nicht Ihrer Parameter. Sie sehen gleich aus, aber sie sind nicht für ein Programm gleich. Um es zu beheben, löschen Sie es einfach und geben Sie es erneut ein. Achten Sie dabei darauf, dass Sie die normale Bindestrich-/Minus-Taste verwenden.

+0

Ich ersetzte den Bindestrich und dass das Problem gelöst. Ich bin nicht sicher, wie der andere Strich eingefügt wurde, da meine Tastatur nur einen Strichschlüssel hat. Danke für die Hilfe. –

0

Das '-' in Ihrem Skript in rm –rf ist nicht das, das es erwartet. Der richtige ist rm -rf.

Ich hoffe, dass Sie den Unterschied erkennen können.

rm –rf rm -rf

Verwandte Themen