[Bash] Utilisation variable avec Head

Résolu
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. Modérateur
    Salut,

    Quel système Linux ?
    0
    1. Salut,

      il s'agit d'un Redhat Enterprise Linux 3.0AS.
      0
      1. Modérateur
        Essaies de quoter la variable :

        head -n "$var" products1.xml >> productstest.xml 
        0
        1. 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
          1. Modérateur
            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
            1. 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
              1. Modérateur
                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
                1. 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
                  1. Modérateur
                    Le script a été écrit sur la machine Linux ?
                    0
                    1. 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
                      1. Modérateur
                        Oui ;-((

                        Affiche :

                        cat -A ton_script
                        0
                        1. 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
                          1. Modérateur
                            Euh... "ton_script" est à remplacé par le véritable nom du script ;-\
                            0
                            1. 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