Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 31/03/2010, à 20:00

fmed1900

instruction incompréhensible

Salut pour tous;
j'ai rencontré cette instruction dans un script Bourne Shell que je n'ai pas bien compris:

if (((expr $1 + 1) l>/dev/null) 2>/dev/nu11)

et ceci est dans le script suivant:

if (((expr $1 + 1) l>/dev/null) 2>/dev/nu11)
then if test $1 -gt 0
        then #un nbre de lignes est précisé
                n=$1
                shift
        else
                echo "erreur : nombre incorrect"
                echo usage : $0 [nbrelignes] fichier'..
                exit 2
        fi
else
        n=5 #valeur prédéfinie
fi

Merci d'avance;

edit modo : merci d'utiliser les balises [code]

Dernière modification par nesthib (Le 31/03/2010, à 20:34)

Hors ligne

#2 Le 31/03/2010, à 20:06

fmed1900

Re : instruction incompréhensible

Ce script visualise les n premières Iignes       
(par défaut = 5) d'une liste de fichiers         
Les paramètres de ce script sont n et les fichiers

Hors ligne

#3 Le 31/03/2010, à 20:43

nesthib

Re : instruction incompréhensible

il y a une erreur dans ton script, c'est 1 pas L devant le >/dev/null

après c'est extrêmement mal codé je trouve :
la première ligne teste si l'argument ($1) est un nombre en essayant d'y ajouter 1. si ce n'est pas la cas cela génère une erreur et le test n'est pas validé (code de retour >0)

@fmed1900 : je ne sais pas où tu vois que le script visualise les n premières lignes de fichiers. Le bout de code présenté ici ne fait rien à part instancier des variables ou afficher des erreurs


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#4 Le 31/03/2010, à 21:40

fmed1900

Re : instruction incompréhensible

Salut M.
Concernant le 'L devant le >/dev/null' vous avez raison c'était une faute de frappe.
Concernant le script, ce qu'est affiché n'est q'une portion du script total:

                                                                 

   f test $# -lt 1
                                                              
  then
           echo erreur : paramètres attendus
           echo usage : $0 [nbrelignes] Iichier...
           exit 1
  fi
  if (((expr $1 + 1) 1>/dev/null) 2>/dev/nu11)
  then if test $1 -gt 0
           then #un nbre de lignes est précisé
                   n=$1
                   shift
            else
                   echo "erreur : nombre incorrect"
                   echo usage : $0 [nbrelignes] fichier'..
                   exit 2
           fi
   else
            n=5 #valeur prédéfinie
   fi
   if test -z $1
   then
            echo "erreur :'unè liste de fichier est attendue"
            echo "usage $0 [nbrelignes] fichier..."
            exit 3
                         
   fi
   for p in $*
  do
  if test -f $p
  then
  head -$n $p 2>/dev/null
  if test $? -eq 1
then 
  echo aucun fichierde ce nom
  fi 
  else
  echo"$p n'est pas fichier"
  fi
  done

edit modo : balises [code]

Dernière modification par nesthib (Le 31/03/2010, à 21:52)

Hors ligne

#5 Le 31/03/2010, à 21:42

fmed1900

Re : instruction incompréhensible

je veux comprendre:

(((expr $1 + 1) 1>/dev/null) 2>/dev/nu11)
shift
exit 2
exit 3
head -$n $p 2>/dev/null

Merci

edit modo : balises [code]

Dernière modification par nesthib (Le 31/03/2010, à 21:53)

Hors ligne

#6 Le 31/03/2010, à 21:51

nesthib

Re : instruction incompréhensible

bon fais un effort et utilise les balises [code] quand tu postes un script stp.

expr $1 + 1 → ajoute 1 à $1, retourne une erreur si $1 n'est pas un nombre
1/2>/dev/null → redirige la sortie standard/erreur vers /dev/null (suppression)
shift → décale les arguments (le #2 devient le #1)
exit 2/3 → arrête le script avec un code de retour 2/3 (=erreur)
head → affiche les premières lignes d'un fichier

d'où vient ce script ? parce que c'est vraiment mal codé


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

Haut de page ↑