[Bash] Utilisation variable avec Head

Résolu/Fermé
Jaime - 15 juin 2010 à 11:58
 Jaime - 15 juin 2010 à 14:22
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

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 juin 2010 à 12:09
Salut,

Quel système Linux ?
0
Salut,

il s'agit d'un Redhat Enterprise Linux 3.0AS.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 juin 2010 à 13:24
Essaies de quoter la variable :

head -n "$var" products1.xml >> productstest.xml 
0
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 juin 2010 à 13:31
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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 juin 2010 à 13:49
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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 juin 2010 à 13:59
Le script a été écrit sur la machine Linux ?
0
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 juin 2010 à 14:04
Oui ;-((

Affiche :

cat -A ton_script
0
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
15 juin 2010 à 14:19
Euh... "ton_script" est à remplacé par le véritable nom du script ;-\
0
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