bash script[: missing `]'

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ren22

bash script[: missing `]'

Beitrag von ren22 » 26.03.2017 17:27:15

hallo,

ich versuche eigentlich

Code: Alles auswählen

[ -e "linux-3.16.6.tar.xz" ] : || wget --no-check-certificate "https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.6.tar.xz"
zu schreiben und scheitere kläglich mit einer Ausgabe von :
./01-build.sh: line 65: [: missing `]' ....

wenn ich das ganze aber so schreibe:

Code: Alles auswählen

if [ -f "linux-3.16.6.tar.xz" ]; then
    :
else 
    wget --no-check-certificate https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.6.tar.xz
fi

habe ich keine FehlerAusgabe ...

Was mache ich bei dem "Einzeiler" falsch ?
Danke

tobo
Beiträge: 2338
Registriert: 10.12.2008 10:51:41

Re: bash script[: missing `]'

Beitrag von tobo » 26.03.2017 17:31:55

ren22 hat geschrieben:Was mache ich bei dem "Einzeiler" falsch ?
Du fügst einen sinnlosen Doppelpunkt ein?

ren22

Re: bash script[: missing `]'

Beitrag von ren22 » 26.03.2017 17:48:35

zum Doppelpunkt ":"
https://www.gnu.org/software/bash/manua ... ltins.html

wenn ich es richtig verstanden habe bedeutet das man mit dem Doppelpunkt einfach nichts ausführt, also quasi das Script
an dieser Stelle weiterlaufen lassen. continue für while for loops usw.

ren22

Re: bash script[: missing `]'

Beitrag von ren22 » 26.03.2017 17:51:37

aber vielleicht sollte ich einfach meinen Code in:

Code: Alles auswählen

[ ! -e "linux-3.16.6.tar.xz" ] && wget --no-check-certificate "https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.6.tar.xz"
ändern ...

:o

tobo
Beiträge: 2338
Registriert: 10.12.2008 10:51:41

Re: bash script[: missing `]'

Beitrag von tobo » 26.03.2017 17:59:28

Genau, das würde auch noch gehen. Entweder man fährt um den Pfosten vor der Einfahrt rum oder man nimmt ihn weg!?

Code: Alles auswählen

[ -e "linux-3.16.6.tar.xz" ] && : || wget --no-check-certificate "https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.6.tar.xz"
[ -e "linux-3.16.6.tar.xz" ] || wget --no-check-certificate "https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.6.tar.xz"
! [ -e "linux-3.16.6.tar.xz" ] && wget --no-check-certificate "https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.6.tar.xz"

Antworten