Sida 1 av 1

Fråga angående if-sats i bash...

Postat: 08 dec 2010, 20:28
av Osprey
Vad fyller de små "x":en före variablerna för funktion i den här jämförelsen, borde inte villkoret vara exakt detsamma även utan dem..?

Kod: Markera allt

if [ x"$XAUTHORITY" != x"" ]; then

Re: Fråga angående if-sats i bash...

Postat: 08 dec 2010, 21:30
av Konservburk
Det har med portabilitet att göra. Oftast är det inte just bash som har problem, utan det brukar snarare vara en del varianter av /bin/sh som kan ställa till det, t.ex. den som följer med solaris. Men det gäller i vissa speciella fall faktiskt även för bash. Här har du ett exempel på när det kan bli fel:

Kod: Markera allt

XAUTHORITY=!
if [ "$XAUTHORITY" != "" ]
then
   echo sant
else
   echo falskt
fi
Alla moderna versioner av bash svarar förstås med ordet sant. Det gäller dock inte för riktigt gamla versioner från 90-talet där koden i else-delen körs istället eftersom du får ett felmeddelande i stil med [: !=: unary operator expected.

Det är förstås föga troligt att variabeln $XAUTHORITY är satt till ett utropstecken, men dock fullt möjligt.

Re: Fråga angående if-sats i bash...

Postat: 08 dec 2010, 22:14
av Osprey
Jag tackar så mycket för en jättebra förklaring... :)

Filen där jag noterade det är förresten /etc/acpi/sleep.sh