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".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 31/03/2010, à 21: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, à 21:34)

Hors ligne

#2 Le 31/03/2010, à 21: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, à 21: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, à 22: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, à 22:52)

Hors ligne

#5 Le 31/03/2010, à 22: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, à 22:53)

Hors ligne

#6 Le 31/03/2010, à 22: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 ↑