staging.inyokaproject.org

Fehler in Shellskript: Fehlende »]«

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Treue_Seele

Anmeldungsdatum:
6. März 2023

Beiträge: 146

if ! [ -d "/dev/Daten1"] ; then
	
	sudo mkdir /dev/Daten1
	fi
	if ! [ -d "/dev/Daten2"] ; then
    sudo mkdir /dev/Daten2
fi

sudo mount /dev/sdc1 /media/Daten1
sudo mount /dev/sdc2 /media/Daten2
 '/home/kingkong/Schreibtisch/Bilder_und_Pornos_auf_externe_Festplatte_kopieren.sh' #
/home/kingkong/Schreibtisch/Bilder_und_Pornos_auf_externe_Festplatte_kopieren.sh
: Zeile 2: [: Fehlende »]«

Wo liegt der fehler und wie kann ich den fehler beseitigen?

Bearbeitet von sebix:

Bitte wähle in Zukunft einen aussagekräftigen Titel!

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Treue_Seele schrieb:

 '/home/kingkong/Schreibtisch/Bilder_und_Pornos_auf_externe_Festplatte_kopieren.sh' #
/home/kingkong/Schreibtisch/Bilder_und_Pornos_auf_externe_Festplatte_kopieren.sh
: Zeile 2: [: Fehlende »]«

Wo liegt der fehler und wie kann ich den fehler beseitigen?

"Bilder" und "Pornos" sind Duplikate von einem Synonym? 🤣

Nach dem Spaß aber nun zum Script, wobei mir Device-Knotennamen wie /dev/Daten1 eher merkwürdig vorkommen, und ich mich frage, ob das schon daher nicht funktionieren kann:

[ ! -b "/dev/Daten1" ] && sudo mkdir /dev/Daten1 && sudo mount /dev/sdc1 /media/Daten1 ; \
[ ! -b "/dev/Daten2" ] && sudo mkdir /dev/Daten2 && sudo mount /dev/sdc2 /media/Daten2

Wobei mir auffällt, wenn ich einen Massenspeicher mit volume name "CONFICKER" habe, dann taucht dieser volume name "CONFICKER" nicht direkt unter /dev/ auf, /dev/disk/by-label ist das Verzeichnis, in dem der volume name zu finden ist. Nicht vergesssen: auch an das Filesystem zu denken. Mein "CONFICKER" hat kein Linux-Filesystem. Fremddateisystemen wollen passende Mountoptionen. Siehe auch (aber nicht nur) im Wiki:

Gucken nach dem volume name "CONFICKER" hier mal als Beispiel:

[ -b "/dev/disk/by-label/CONFICKER" ] && echo "Da isser wieder, der CONFICKER!" || echo "CONFICKER nicht gefunden."

Das geht auch mit USB-Sticks. Für das coreutil test siehe auch die Manualpage:

Die Manualpage gibt es auch direkt im Terminal zu lesen, so:

man test

Treue_Seele

(Themenstarter)

Anmeldungsdatum:
6. März 2023

Beiträge: 146

trollsportverein

Was bedeutet der Befehlschalter

[ ! -b

?

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Treue_Seele schrieb:

trollsportverein

Was bedeutet der Befehlschalter

[ ! -b

?

Das Ausrufezeichen steht für den logischen Operator ungleich. Das -b steht für, Zitat Manualpage test:

-b FILE
FILE exists and is block special

Probbier es mal aus:

[ -b "/dev/sda" ] && echo "Das Blockdevice mit dem gesuchten Device-Knoten ist vorhanden." || echo "KEIN Blockdevice mit dem gesuchten Device-Knoten gefunden!"

Verändere es mit dem Schalter -d für Verzeichnisse, dann funktioniert es nicht mehr. Es wird dann anzeigen das KEIN Blockdevice mit dem gesuchten Device-Knoten gefunden wurde, auch wenn /dev/sda vorhanden ist. Wenn es KEIN /dev/sdz gibt, dann kann man sich auch anschauen wie der logische Operator oder funktioniert, das ist das ||:

[ -b "/dev/sdz" ] && echo "Das Blockdevice mit dem gesuchten Device-Knoten ist vorhanden." || echo "KEIN Blockdevice mit dem gesuchten Device-Knoten gefunden!"

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5077

Welche Shell verwendest du eigentlich?

Treue_Seele schrieb:

if ! [ -d "/dev/Daten1"] ; then
: Zeile 2: [: Fehlende »]«

Fehlender Abstand zwischen " und ]?

Treue_Seele

(Themenstarter)

Anmeldungsdatum:
6. März 2023

Beiträge: 146

Ja so gehst >

if  [ -d "/dev/Daten1" ] ; then

Jetzt hiesiger Thread gelöst

sebix

echo $SHELL 
/bin/bash
Antworten |