co je spatne na tomhle skriptu ??

matus.uhlar na in.nextra.sk matus.uhlar na in.nextra.sk
Čtvrtek Říjen 14 12:46:21 CEST 1999


Corp. yA Zdenek Pizl <pizl na max.af.czu.cz> wrote:
-> FLAG="header"

-> while read line; do

->    # tady udelame test na to, jestli jsme uz nacetli oddelovaci radek <!--end-->
->    if  [ $FLAG = "header" ];  then

spravne:
      if  [ "$FLAG" = header ]; then

->        echo "To header : $line"
->      else
->        echo "To footer : $line"
->    fi

->    # nastavime priznak, ze jsme uz nacetli oddelovaci radek <!--end-->
->    if [ $line = "<!--end-->" ];  then

spravne:
      if [ "4line" = "<!--end-->" ]; then

->         FLAG="footer"
->    fi

-> done < $FHTML

je to jednoduche ako facka (imho)

if [ $premenna = "test" ]; then

je chybne ponata konstrukcia. vychadza z pascalu alebo C kde busi byt
retazec uzavrety v uvodzovkach. v shell skripte sa to odovzda ako parameter
bez uvodzoviek teda jedho ci napiseme

echo "ahoj"
  alebo
echo ahoj

v kazdom pripade dostane echo jeden argument a to ahoj. Rozdiel vsak je ked
napiseme

echo "Ahoj vole"
  a
echo Ahoj vole

v druhom pripade dostane echo dva argumenty v prvom jeden, strati sa
informacia ako boli tieto slove oddelene...

uvidite ked vyskusate

echo "Ahoj     vole"
 a
echo Ahoj     vole

ak expandujete argument bez "" takze
read premenna

echo $premenna
 a
echo "$premenna"

dostanu tolko argumentov kolko bolo slov takze ked do vstupu zadate 
ahoj    vole

dostanete rovnaky rozdiel ako predtym.
Nuz a ked pouzivate

if [ $premenna = ahoj ]

a premenna obsahuje text
ahoj vole

rozvinie sa to na

if [ ahoj vole = ahoj ]

takze test dostane parametre

"ahoj" "vole" "=" "ahoj"
a nevie ako sa z toho vysomarit...

-- 
 Matus "fantomas" Uhlar, sysadmin at NEXTRA, Slovakia; IRC admin of *.sk
 uhlar na fantomas.sk; http://www.fantomas.sk/; http://www.nextra.sk/
 Enter any 12-digit prime number to continue.


Další informace o konferenci Linux