Portál AbcLinuxu, 10. května 2025 05:50

Dotaz: Proč mi nefunguje jednoduchý příkaz "if" správně?

Aetos avatar 3.3.2012 17:29 Aetos | skóre: 13
Proč mi nefunguje jednoduchý příkaz "if" správně?
Přečteno: 306×
Odpovědět | Admin

Ahoj, měl bych další malý dotaz. Věřím že mi někdo poradí nějakou maličkost a ono to půjde. Googlil jsem dlouho, až jsem nakonec našel příklad nady na http://www.abclinuxu.cz/clanky/navody/bash-iii. Ale asi to tam bylo špatně napsané. Spousta lidí se o tom hádala, ale já to z jejich debaty nepochopil. Otázka zní: proč mi nefunguje takto naspaný příkaz if:

if [$a=="1"] && [$b=="2"]; then	#chyba: tento řádek: [1==1]: příkaz nenalezen	
   ln s$b ../hl
fi

Asi mám špatně napsaný ten if. U čísel mám uvozovky i když to není String, ale když je odtraním tak to pořád dělá to samé.

 

Děkuji předem za pomoc

P.S. - pro jistotu to přidávám celé

#!/bin/bash  
DATE=`date +%d.%m.%Y`
DIR="temp-$DATE" 	
mkdir $DIR;
cd $DIR

for (( a=1 ; $a-3 ; a=$a+1 ))
   do	
      mkdir adr$a
	cd adr$a/

    for((b=1; $b-4; b=$b+1))
        do
          touch s$b
          if [$a==1] && [$b==2]; then		
              ln s$b ../hl
          fi
          if [$a==2 && $b==1]; then		
             ln -s s$b ../sl
          fi
        done
done

 


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.3.2012 17:39 Vlk
Rozbalit Rozbalit vše Re: Proč mi nefunguje jednoduchý příkaz "if" správně?
Odpovědět | | Sbalit | Link | Blokovat | Admin
V bashi jsem nedělal už nějakou chvíli, ale mám pocit, že musíš dodržovat mezery mezi výrazy, aby si je mohl bash správně vyložit.

Například takhle.

[ $a == 1 ] && [ $b == 2 ]
Aetos avatar 3.3.2012 17:43 Aetos | skóre: 13
Rozbalit Rozbalit vše Re: Proč mi nefunguje jednoduchý příkaz "if" správně?
Děkuji ti mnohokrát za pomoc, už nad tím sedím 60 minut a stačili mezery :-) díky
Jendа avatar 3.3.2012 17:41 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Proč mi nefunguje jednoduchý příkaz "if" správně?
Odpovědět | | Sbalit | Link | Blokovat | Admin
[ je název programu (u mě /usr/bin/[). Parametry se pochopitelně musí oddělit mezerou, stejně jako nemůžeš napsat mkdiradresář místo mkdir adresář.
Aetos avatar 3.3.2012 17:45 Aetos | skóre: 13
Rozbalit Rozbalit vše Re: Proč mi nefunguje jednoduchý příkaz "if" správně?
Díky, už jsem se další novou věc naučil :-) Teď mi to jen dělá něco jiného než chci, ale s tím si už poradím. Když to do pár hodin nevyřeším tak se ozvu :-D
Aetos avatar 3.3.2012 18:01 Aetos | skóre: 13
Rozbalit Rozbalit vše Re: Proč mi nefunguje jednoduchý příkaz "if" správně?
Dobře zeptám se hned. Nevíš náhodou, proč se mi v programu ten pevný link vytvoří správně ale symbolický link se vytvoří špatně? On ten symbolický link hlásí že sobor kam ukazuje, už neexistuje.
3.3.2012 20:01 l4m4
Rozbalit Rozbalit vše Re: Proč mi nefunguje jednoduchý příkaz "if" správně?
To je nějaká podezřelá hláška. Nehlásí náhodou, že už existuje? V tom případě použij -f, abys ho přepsal, i když existuje (pokud je to to, co chceš).

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.