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

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

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

Inlägg 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
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

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

Inlägg 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.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

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

Inlägg 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
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Skriv svar

Återgå till "Terminalforum"