[Bash] Utilisation variable avec Head

Résolu
Jaime -  
 Jaime -
Bonjour,

je débute sous Linux, et tente de scripter une commande de type "head".

Seulement, impossible de passer par une variable. J'ai cherché en vain sur pas mal de tuto, mais pas moyen.

Voici mon code :

#!/bin/bash
var=2
head -n $var products1.xml >> productstest.xml

le message d'erreur : Invalide number of lines

Quand je tente de mettre le nombre en dur, cela fonctionne en revanche.
J'ai tenté de typer ma variable, changer de Shell, mais rien n'y fait.

Dans les tutos, le code est identique...

Où pourrait se situer le problème selon vous ?

Merci d'avance pour votre aide

14 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Quel système Linux ?
    0
  2. Jaime
     
    Salut,

    il s'agit d'un Redhat Enterprise Linux 3.0AS.
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Essaies de quoter la variable :

    head -n "$var" products1.xml >> productstest.xml 
    0
  4. Jaime
     
    J'avais déjà testé avec les simples et doubles quote pour le même résultat :/

    Je suis en train de me demander si il ne s'agit pas d'un souci de shell ou autre vu que la syntaxe semble correcte.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Rajoute ces 2 lignes (en gras) et exécute ton scripts et dis-nous ce qu'il en ressort...

    #!/bin/bash
    set -xv
    var=2
    echo "$var"
    head -n "$var" products1.xml >> productstest.xml 
    0
  7. Jaime
     
    Merci de ton aide =)

    Apparement il n'apprécie pas le set.

    Voici le message :

    : invalid option2: set: -
    set: usage: set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Y'a un problème quelque part avec ton shell ;-((

    La commande "set" est une commande interne au bash, et les 2 paramètres "-xv" sont ce qu'il y a de plus commun et d'utilisé ;-\

    Que te renvoie les commandes :

    echo $SHELL
    cat /etc/shells
    0
  9. Jaime
     
    Arf, c'est ce que je suspectais :/

    Voici pour les commandes :

    echo $SHELL
    /bin/bash

    cat /etc/shells
    /bin/sh
    /bin/bash
    /sbin/nologin
    /bin/bash2
    /bin/ash
    /bin/bsh
    /bin/ksh
    /bin/tcsh
    /bin/csh
    0
  10. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Le script a été écrit sur la machine Linux ?
    0
  11. Jaime
     
    ah non, je l'ai écrit via le bloc note windows, et le fichier script.sh est copié sur un DD partagé.

    Cela pourrait poser souci ?
    0
  12. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Oui ;-((

    Affiche :

    cat -A ton_script
    0
  13. Jaime
     
    Oups oui en effet, problème à ce niveau

    cat -A ton_script
    cat: not found

    Merci de l'aide !

    Je vais essayer de scripter directement via linux alors =)
    0
  14. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Euh... "ton_script" est à remplacé par le véritable nom du script ;-\
    0
  15. Jaime
     
    Oui oui, j'ai juste fait un copier coller sur le fofo pour reprendre la commande dans ma réponse xD

    cat -A script.sh => la vrai commande ;)
    0