Newsgroup: it.comp.os.linux.development
Titolo: Bash script, non riesco a trovare un bug

Il programmino genera un index.html in base al file trovati.
Il bug consiste nel l'immissione per il primo file dell'elenco con
attributo eseguibile il tag '*' con la conseguenza che quando
si attiva il collegamento in browser esso non riesce a trovare tale
file.
Non riesco proprio a vedere l'errore!
#!/bin/bash
# Da "Risolvere autonomamente in Linux" di Francesco Cosoleto
#
# Rimozione bug/miglioramenti/modifche di
#
VER=1.0
TMP=/tmp
ITC="
  -q, --quantità    aggiunge indicazioni sulla quantità di archivi DEB,
RPM, TAR"
CFG="/etc/ /usr/etc/ /usr/local/etc/ $HOME/etc 0"
CFG_FILE=indextool.cfg
for cfg in $CFG
do
if [ -e $cfg$CFG_FILE ]
then
 . $cfg$CFG_FILE
 break
fi
if [ $cfg = 0 ]
then
ITC=""
fi
done
#
#
FILETMP=$TMP/IT-Mklink.$$
STAT=""
BK_TAG=bak
CANCELLA=0
BACKUP=0
NS=1
NQ=1
APPEND=0
until [ $# = 0 ]
do
 case "$1" in
 --help | --hel | --he | -h)
  cat <<END
Crea index.html (make index.html; indextoolmklink $VER)
Modalità: indextoolmklink [OPZIONE]... [PERCORSO]
Crea file indice HTML per gli elementi disponibili in PERCORSO
  -d                disabilita l'aggancio a index.html di una directorty
  -r, --recurisive  operazione per ogni directory incontrata
  -s, --sovrascrive soprascrive preesistenti index.html
  -i, --interattivo pone questioni (es. sovrascrivo file...?)
  -a, --appende     appende i dati uscenti agli index.html trovati
  -b, --backup      backup di preesistenti index.html
(index.html.$BK_TAG)
  -c. --cancella    cancella index.html$ITC
Senza PERCORSO verrà utilizzata la directory corrente ($PWD)
Bisogna anteporre i trattini ad ogni opzione
Rapporto anomalie a 
coso...@unive.it
END
 exit 1 ;;
 -d)
  DISABLINK=1 ;;
 --quantità | --quantit | --quanti | --quant | --quan | --qua | --qu |
-q)
  QUANTIT=1 ;;
 --recursive | --recursiv | --recursi | --recurs | --recur | --recu |
--rec | --re | -r)
 RECURS=1 ;;
 -s | --sovrascrive | --sovrascriv | --sovrascri | --sovrascr |
--sovrasc | --sovras | --sovr | --sov | --so)
 NS=0 ;;
 -i | --interattivo | --interattiv | --interatti | --interat | --intera
| --inter | --inte | --int | --in)
 NQ=0 ;;
 -a | --appende | --append | --appen | --appe | --app | --ap)
APPEND=1 ;;
 --cancella | --cancell | --cancel | --cance | --canc | --can | --ca |
-c)
 CANCELLA=1 ;;
 --backup | --backu | --back | --bac | --ba | -b)
 BACKUP=1 ;;
 [^-]*)
 DIRBAS=$1
 esac
 shift
done
[ -z "$DIRBAS" ] && DIRBAS=$PWD
myexit()
{
rm $FILETMP 2>/dev/null
}
makeindex()
{
if [ $CANCELLA = 1 ]
then
 rm "$1"/index.html
# rm "$1"/index.htm
 myexit
 return 0
fi
if [ $BACKUP = 1 ]
then
 cp "$1"/index.html "$1"/index.html.$BK_TAG
fi
if [ $NS = 1 ]
then
 if [ -e "$1"/index.html -a $APPEND = 0 ]
 then
  echo "$1/index.html esistente"
  if [ $NQ = 1 ]
  then
   myexit
   return 0
  else
   #
   #FIXME:
   dialog --yesno "Sovrascrivere $1/index.html?" 6 30
   [ $? = 1 ] && myexit && return 0
  fi
 fi
fi
  ls -AF "$1" | grep -v index.html >$FILETMP
  L=`cat $FILETMP | wc -l`
  if [ $L = 0 ]
  then
   myexit
   return 0
  else
   if [ $APPEND = 0 -o ! -e "$1"/index.html ]
   then
    echo -e >"$1"/index.html "<html><body>"
   fi
  fi
  RIP=0
  until [ $RIP = $L ]
  do
   let RIP=$RIP+1
   na=`cat $FILETMP | sed -n $RIP"p"`
   n=`echo $na | sed -e "s/ /%20/g"`
   MKINDEX=""
   if [ ! $DISABLINK = 1 ]
   then
    if [ ! -f "$na" ]; then
     MKINDEX=index.html
    fi
   fi
 # Conta il numero di RPM, DEB e TAR presenti
 cd "$1" 2>>$LOGPATH
 if test "$QUANTIT" = "1"
 then
  STAT=" -"
  cd "$na" 2>>$LOGPATH
  N_DEB=`cat index.html | grep " DEB</font>" | wc -l`
  N_DEB=`echo $N_DEB`
  if [ ! $N_DEB = "0" ]
  then
   STAT=$STAT" DEB <$STILELK>$N_DEB</$STILELK>"
  fi
  N_RPM=`cat index.html | grep " RPM</font>" | wc -l`
  N_RPM=`echo $N_RPM`
  if [ ! $N_RPM = "0" ]
  then
   STAT=$STAT" RPM <$STILELK>$N_RPM</$STILELK>"
  fi
  N_TAR=`cat index.html | grep " TAR</font>" | wc -l`
  N_TAR=`echo $N_TAR`
  if [ ! $N_TAR = "0" ]
  then
   STAT=$STAT" TAR <$STILELK>$N_TAR</$STILELK>"
  fi
 fi  
  #-elenca file collegati-# echo $na
  echo -e >>"$1/index.html" "<a
href=\""$n"$MKINDEX\">"$na"</a>$STAT<br>"
  STAT=""
 done
 myexit
# Modifiche per migliore modularità quasi pronte
#
#ls -A /root/bin/IT-modulo_??? | cat | wc -l >/tmp/FILE
#ls -A /root/bin/IT-modulo_??? | cat >/tmp/FILE
#until [ $D = $I ]
#do
# let D=$D+1
#cut -c `expr \`cat /tmp/FILE | sed -n $D"p" | wc -c\` - 3`- | tr
'[:lower:]' '[:upper:]'
# N=""
# N=`cat index.html | grep " $FORM</font>" | wc -l`
# N=`echo $N`
# if [ ! $N = "0" ]
# then
#  STAT=$STAT" $FORM <$STILELK>$N</$STILELK>"
# fi
#done
}
case $RECURS in
 1)
# Disabilita la conta degli archivi
QUANTIT=0
# Genera tabella d'esecuzione di makeindex()
find $DIRBAS -type d -exec echo "makeindex \"{}\"" \; >$FILETMP.2
source $FILETMP.2
rm $FILETMP.2 ;;
 *)
 makeindex $DIRBAS ;;
esac

Ciao Francesco Cosoleto,
 > Il programmino genera un index.html in base al file trovati.
 > Il bug consiste nel l'immissione per il primo file dell'elenco con
 > attributo eseguibile il tag '*' con la conseguenza che quando
 > si attiva il collegamento in browser esso non riesce a trovare tale
 > file.
non e' banalmente un problema di permessi dei file creati?
-- 
Pa.Ped, Como
http://www.fastflow.it/~paolop
ICQ: 4755831

   ls -AF "$1" | grep -v index.html >$FILETMP
         ^
Eccolo qui.
Manca anche "</body></html>"?
Ciao,
Marco

non e' banalmente un problema di permessi dei file creati?
No, ma quel 'banalmente' mi ha portato a correggerlo e trovare un altro bug.
Ma la vera anomalia - facile convenire - e' stata scrivere il messaggio.

attributo eseguibile il tag '*' con la conseguenza che quando
[cut]
Ma non e' meglio creare la pagina dinamicamente con PHP??