Portál AbcLinuxu, 10. května 2025 05:50
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:
[ $a == 1 ] && [ $b == 2 ]
[
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ář
.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.