[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

A voir également:

14 réponses

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

Quel système Linux ?
0
Jaime
 
Salut,

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

head -n "$var" products1.xml >> productstest.xml 
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Le script a été écrit sur la machine Linux ?
0
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Oui ;-((

Affiche :

cat -A ton_script
0
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Euh... "ton_script" est à remplacé par le véritable nom du script ;-\
0
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