PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash: Strings vergleichen



dimevit
27-02-2006, 16:17
Hallo zusammen,

da ich neu bei BASH bin kenne mich net so gut aus und deshalb verstehe nicht den folgenden Fehler:



ON_LINE=on-line

AC_ADAPTER=`cat /proc/acpi/ac_adapter/AC/state | awk '/'state'/ {print $2}'`
if ["$AC_ADAPTER" == "$ON_LINE"]
then echo "Laptop läuft auf Strom"
else echo "Laptop läuft auf Battery"
fi


line 10: [on-line: command not found
Laptop läuft auf Battery

Kann mir jemand erklären was daran falsch ist

Vielen Dank,
Dime

peschmae
27-02-2006, 16:21
Nach dem [ muss zwingend ein Leerschlag folgen. Grund: [ ist ein Programm nämlich /usr/bin/[ das dasselbe macht wie das Programm "test".

Entsprechend sollte es auch = sein und nicht ==

MfG Peschmä

dimevit
27-02-2006, 16:24
Danke

das mit dem Leerzeichen wusste ich net

peschmae
27-02-2006, 20:54
Ist auch nicht offensichtlich - da fällt jeder mal drauf rein ;)

MfG Peschmä

Joghurt
28-02-2006, 14:26
Nach dem [ muss zwingend ein Leerschlag folgen. Grund: [ ist ein Programm nämlich /usr/bin/[ das dasselbe macht wie das Programm "test".Wobei beide häufig shellinterne Befehle sind, nur der Vollständigkeithalber sei das erwähnt.

Und wie peschmae schon sagte, ist "==" bash spezifisch, also entweder "#!/bin/bash" als shebang-Zeile nehmen oder auf "=" ausweichen. Ansonsten läuft dein Skript nicht auf Rechnern, auf denen /bin/sh != bash ist (wie z.B. bei mir; hab schon den ein oder anderen "bashism" Bugreport an den jeweiligen DD geschickt)