» »

[Bash] - težave z IF stavki

[Bash] - težave z IF stavki

R33D3M33R ::

Delam na neki skripti, ki pobere informacije iz datoteke po vrsticah in informacijo shrani v variablo EXTENSION

EXTENSION=${REALNAME#*.}

Ko dam:

echo $EXTENSION

mi vrne pravo končnico. Super.
Naredim IF stavek:

if [ "$EXTENSION" = 'ext' ]; then echo "ext"
elif [ "$EXTENSION" = 'nxt' ]; then echo "nxt"
else echo "Skipping ..."
fi

In rezultat je Skipping za vsako vrstico, čeprav echo da ext ali nxt. Hm 8-O
Preizkusil sem že vse mogoče od

[ $EXTENSION = 'ext' ]
[ $EXTENSION = "ext" ]
[ "$EXTENSION" = "ext" ]
[ "$EXTENSION"='ext' ]
[ "$EXTENSION"="ext" ]

itd.
Ne dela. Kaj delam narobe?

Hvala za pomoč!
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:

mile ::

==

mile ::

oziroma -eq

R33D3M33R ::

-eq noče, ker niso integerji, == pa tudi ne dela :(
Dozdeva se mi, da bi bil lahko kriv kak new line znak. Kako pa rešim to?
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:

Zgodovina sprememb…

mile ::

tole lepo deluje, -eq je pa res int operator... pazi na presledke v oglatih oklepajih


#!/bin/bash

TEMP="bla"

if [ $TEMP = "bla" ];
then
        echo  "DA"
else
        echo  "NE"
fi




PS: če so problemi z #10 pa porezi z

tr -d \r

Zgodovina sprememb…

  • spremenil: mile ()

mile ::

oziroma sed



TEMP="bla\n"

TEMP2=`echo -e $TEMP | sed 's/\n//g' `

if [ $TEMP2 = "bla" ];
then
        echo  "DA"
else
        echo  "NE"
fi


R33D3M33R ::

Ne boš verjel, ampak ti hudir noče delati ;((
Koda je takale:

#!bin/bash
UTdir="/home/user/igre/ut"
CacheDir="/home/user/.loki/ut/Cache"

while read inputline
do
CODE=${inputline%=*}
REALNAME=${inputline#*=}
TMPEXTENSION=${REALNAME#*.}
EXTENSION=`echo -e $TMPEXTENSION | sed 's/\n//g' `
	if [ $EXTENSION == 'umx' ]; then echo "umx"
	elif [ $EXTENSION == 'uax' ]; then echo "uax"
	elif [ $EXTENSION == 'int' ]; then echo "int"
	elif [ $EXTENSION == 'u' ]; then echo "u"
	elif [ $EXTENSION == 'utx' ]; then echo "utx"
	elif [ $EXTENSION == "unr" ]; then echo "unr"
	else echo "Skipping ..."
	fi
echo $EXTENSION
done < $CacheDir/cache.ini


Fajl je pa navaden tekst file, kjer je vsaka vrstica vsebuje nekaj takega:

[Cache]
3A53DA9744D98F9D7353C1B201CA51AB=SkeletalChars.u
E7B55F9946192F0F8CB102B9C656707A=DoGKip.unr
.
.
.
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:

mile ::

hmm
če poženem tole skripto, mi izpise

Skipping ...
u
unr



kar se mi zdi OK?

R33D3M33R ::

To je zato, ker je spodaj še echo $EXTENSION. Skipping ne bi smelo izpisati pri teh dveh primerih...
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:

mile ::

noup..tist sm jst vm vrgu

kdo ti zgenerira te fajle? dej jih za foro prej cez dos2unix pozen

R33D3M33R ::

Fajl mi naredi Unreal Tournament. Sem ti poslal link na ZS.
Moja domača stran: http://andrej.mernik.eu
Na spletu že od junija 2002 ;)
:(){ :|:& };:


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Cron problem

Oddelek: Operacijski sistemi
5858 (684) c3p0
»

bash skripta ki bere txt

Oddelek: Programiranje
81117 (847) Mike0
»

[bash] Sortiranje fotografij po datumu

Oddelek: Programiranje
101460 (1021) Mike0
»

[Bash] Preverjanje legalnosti poti

Oddelek: Programiranje
161465 (1092) piki12
»

Arhiviranje serverja s TAR - incremental in FTP na drugo lokacijo in email report - S

Oddelek: Operacijski sistemi
61580 (1491) Daedalus

Več podobnih tem