2016-04-02 2 views
1

Ich versuche ein einfaches Skript zu erstellen, das Junk-Dateien in ein bin-ähnliches Verzeichnis verschiebt.Wie füge ich ein festes Verzeichnis in eine if-Anweisung ein?

Der Code i ist hier schrieb:

echo "Which file/s you want to delete?" 

read fileName 

if [ -d "/home/user/.waste"] 
then 
    #moves the file to .waste 
    mv $fileName /home/user/.waste 
    echo "File deleted." 

else 
    #creates the directory 
    mkdir /home/user/.waste 
    mv $fileName /home/user/.waste 
    echo "waste bin created and file deleted." 
fi 

Wenn ich das Skript ausführen, während das Verzeichnis mit es geht auf die andere Option hält und erkennen nicht den Wert i in der if-Anweisung eingegeben.

+0

Sie benötigen einen Raum nach dem Verzeichnisnamen im Test: 'if [-d "/home/user/.waste"]' – KevinO

+1

Wenn Sie mkdir -p verwenden, müssen Sie nicht die Notwendigkeit if-Anweisung . Erstellen Sie einfach das Verzeichnis vor dem Verschieben. – SaintHax

Antwort

1

Ich vermute, dass der Test falsch ist (benötigt ein Leerzeichen vor der schließenden Klammer). if [ -d "DIR" ].

#!/bin/bash 

WASTE_DIR="/home/user/.waste" 

echo "Which file/s you want to delete?" 

read fileName 

if [ ! -f "$fileName" ] 
then 
    echo "Unable to find file "$fileName" 
fi 

if [ -d "$WASTE_DIR" ] 
then 
    mv "$fileName" "$WASTE_DIR" 
    echo "File moved to waste" 
else 
    mkdir -p "$WASTE_DIR" 
    mv "$fileName" "$WASTE_DIR" 
    echo "$WASTE_DIR created and file moved" 
fi 
Verwandte Themen