Debian Terminal - Abfrage ob Datei existiert

Rubyurek

Commander
Registriert
Sep. 2017
Beiträge
2.620
echo "Wie soll die Datei heißen?"
read $FILE

if [ -f ~/SKRIPT/$FILE ]
then echo "Datei existiert schon"
exit
else
touch ~/SKRIPT/$FILE
echo "Datei wurde erstellt"
fi

Die Aufgabe soll sein, dass abgefragt werden soll ob die Datei die ich erstelle existiert. Wenn ja soll abgebrochen werden, wenn nein soll sie erstellt werden. Jedoch komm ich nicht auf die konkrete Lösung dafür. Jemand ne idee?
 
Wäre ja noch hilfreich wenn du uns sagen würdest wo jetzt genau das Problem ist? Denn an sich sieht das schonmal nicht falsch aus.

Kommt halt nur drauf an was man dann eingibt, sprich ob der Pfad ~/SKRIPT/xyz dann überhaupt gültig ist.
 
Du kannst das Script weglassen und touch verwenden.
Falls die Datei schon da ist, wird nur das Datum aktualisiert.
 
  • Gefällt mir
Reaktionen: Old Knitterhemd
Das ist eine Möglichkeit wenn das Datum egal ist ja.

Ansonsten kannst du übrigens auch die Bedingung negieren, sodass du den jetzigen then Part weglassen kannst. if [ ! -f $FILE ] ...
 
Mihawk90 schrieb:
Wäre ja noch hilfreich wenn du uns sagen würdest wo jetzt genau das Problem ist? Denn an sich sieht das schonmal nicht falsch aus.

Kommt halt nur drauf an was man dann eingibt, sprich ob der Pfad ~/SKRIPT/xyz dann überhaupt gültig ist.

Pfad ist gültig nur die Datei wird durch eine Variable ersetzt. Grund hier für ist, dass ich selbst entscheiden möchte wie die Datei heißt. Aber der sagt mir die Datei ist vorhanden obwohl sie nicht existiert.
 
Lass dir mal mit echo ~/SKRIPT/$FILE ausgeben was er da überhaupt mit der Variable macht. Kann mir sonst kaum vorstellen was es sein soll.

/edit
Scheint mir so als hättest du ein ; hinter der ] vergessen, möglich dass der Block bis exit daher immer ausgeführt wird.
 
Ich mache das immer über direkte Eingabe als Argument, read hab ich in meinen 30 Jahren Unix noch gar nicht verwendet. ;)
Code:
#!/bin/bash

FILE=$1

if [ -f ~/SKRIPT/$FILE ];then
    echo "Datei existiert schon"
    exit
else
    touch ~/SKRIPT/$FILE
    echo "Datei wurde erstellt"
fi

Aufruf dann mit
Code:
programmname datei
Vorher noch mit chmod +x berechtigen. Geht doch. :confused_alt:
 
#!/bin/bash
echo "Wie soll die Datei heißen?"
read $FILE

if [ -f ~/SKRIPT/$FILE ] ; then
echo "Datei existiert schon"
exit
else
touch ~/SKRIPT/$FILE
echo "Datei wurde erstellt"
fi

Das shebang (erste Zeile) ist nicht ganz so unwichtig. Kann sein das dein Script sonst mit der falschen shell ausgeführt wird und dadurch nicht richtig funktioniert.
 
@Groug also die shebang habe ich schon standardmäßig drine und auskommentiert^^
 
Argumente an test immer quoten, es sei denn, man weiß, was man tut. :)
[ -f "$HOME/SKRIPT/$FILE" ]

Edit: Dasselbe gilt natürlich auch für touch "$HOME/foo/$FILE". Alles andere ist ein Fehler, insbesondere, wenn es sich um eine Nutzereingabe handelt.
 
  • Gefällt mir
Reaktionen: Mihawk90

Ähnliche Themen

Zurück
Oben