Aller au contenu

[Résolu] petit soucis dans un script

Featured Replies

Posté(e)

Salut les INpactiens,

J'ai un petit soucis dans un script...

Si je l'exécute dans un script ça foire car il exécute ligne par ligne. Si par contre je fais un copier-coller dans bash, ça fonctionne !

Donc je suis un peu embêté là...

 mail-text_att_text.sh  \
-f  \
-t ' destinataire@provider.com' \
-s TEST  \
' ' \
</dev/null

Si quelqu'un a une idée...

snif...

Modifié par tyrann27

Posté(e)
  • Auteur

C'est le contenu du script.

Il en appelle un autre en passant les paramètres que vous voyez.

Le principe est que ce que j'ai donné est généré par un programme.

Il va ensuite exécuter le script qu'il a généré.

Je ne passe aucun paramètre au script généré.

Posté(e)

pourquoi le mettre sur plusieurs lignes ? j'imagine que tu fais du "mail-text_att_text.sh -f -t $dest -s $sujet $msg", avec les variables remplies par un autre scripte, non ?

Posté(e)
  • Auteur

mmmmmmh non

En fait je travaille dans une bouse de langage qui s'appelle NATURAL (pas taper :transpi:) et c'est de là que j'écris le script.

Je le fais ligne par ligne parce que dans les jobs engine des batchs c'est fait comme ça (donc je sais que ça fonctionne) mais surtout pour une meilleure lisibilité du code pour mes successeurs et pour un debugging plus facile... (le module pouvant gérer 3x10 (to,cc,bcc) adresses de 70 caractères (qu'il écrit d'office même si c'est du blanc) ça voudrait dire que j'aurais une seule ligne de....... +/- 2500 caractères au total... C'est illisible et impensable.

D'où l'écriture sur plusieurs lignes !

Mais en fait, la source du problème est qu'il ne prend pas en compte le \ et donc il lance mail-text_att_text.sh sans aucuns paramètres :craint:

Posté(e)

D'accortd, donc le problème vient bien du langage que tu utilise pour le scripte et qui se chie dessus dès qu'il faut plusieurs lignes ?

Dans ce cas, tu peux peut-être mettre chaque ligne dans une variable, et concaténer les variables à chaque fois. à la fin, tu n'exécutes que la variable concaténant toutes les autes. exemple :

mail="mail-text_att_text.sh -f"

#dest
mail="$mail -d bidule"

#sujet
mail=$mail" -s sujet"

[...]

$mail

pas hyper méga lisible, mais mieux que rien :D

Posté(e)
  • Auteur

Effectivement c'est une solution !

Merci lorinc, je vais essayer lundi.

Néanmoins je suis frustré de ne pas comprendre pourquoi ça ne fonctionne pas quand j'exécute le script directement sur la machine...

Admettons que j'écrive moi-meme le script directement sur la machine, lors de l'éxécution c'est mort.

Par contre si je tape les mêmes lignes directement dans le shell, ça fonctionne !

C'est ça qui me rend malade :D

Posté(e)
Néanmoins je suis frustré de ne pas comprendre pourquoi ça ne fonctionne pas quand j'exécute le script directement sur la machine...

Admettons que j'écrive moi-meme le script directement sur la machine, lors de l'éxécution c'est mort.

Par contre si je tape les mêmes lignes directement dans le shell, ça fonctionne !

C'est ça qui me rend malade :pleure:

C'est simple, utilise ton shell (bash?) comme interpréteur...

(Par exemple avec "#!/bin/bash" comme première ligne)

Après effectivement si tu essayes de comparer le comportement de bash et d'un autre interpréteur ("natural"?), c'est forcé qu'il y ait des différences (sinon natural s'appellerait simplement "bash").

Posté(e)
  • Auteur

non non non on s'est mal compris !

Natural écrit le script dans un fichier texte. Ensuite il fait appel à une commande système qui sera sh nomduscript.sh

Donc lundi j'essayerai en rajoutant la définition du shell tout en haut mais je n'y crois pas trop ;)

Posté(e)
  • Auteur

Ayé j'ai trouvé ^^

Quelle connerie...

Il y avait un espace derrière chaque backslash qui empechait le bon fonctionnement de ce dernier...

Bref... Ca fonctionnne...

Posté(e)
  • Auteur

Oui mais moi j'ai une excuse !

C'est parce que j'ai viré l'espace dans la définition du champs dans natural mais que cette bouse écrit la totalité du champ, quelque soit son contenu !

Donc si tu définis un alphanumérique de 1000 caractères. Que tu mets "A" dedans.

Lors de l'écriture dans le fichier tu auras "A" suivi de 999 blancs :transpi:

grrrrrrrrrrrrrr :ane:

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.