BASH Passage de paramètre contenant des espaces

BASH Passage de paramètre contenant des espaces - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 08-02-2008 à 19:33:38    

Bonjour tout le monde.
 
Je rencontre un soucis pour passer des paramètres contenant un espace à un script bash.
Ce script converti un fichier mp3 en flv avec ffmpeg
 
Ceci fonctionne

Code :
  1. ./encode_flv.sh /chemin_vers_fichier/1.mp3  2269.flv chemin_de_destination/


 
Ceci ne fonctionne pas

Code :
  1. ./encode_flv.sh /chemin_vers_fichier/Nom de fichier avec des espaces.mp3  2270.flv chemin_de_destination/


 
Normal me direz-vous, il y a des espaces, mais que ce soit en encadrant le parametre avec des guillemets simple/double ou en échappant les espaces, le script ne veut rien savoir, quand j'affiche la variable $1, j'obtiens toujours "/chemin_vers_fichier/Nom".
 
Quelqu'un a une idée ?
J'ai tenté mon ami Google en cherchant dans des tuto de bash mais c'est toujours des parametres "simple" qui sont passés au script.
 
Merci.

Message cité 1 fois
Message édité par ragondin le 08-02-2008 à 19:55:03

---------------
Pays et country_code traduits : https://www.iso-country-code.com
Reply

Marsh Posté le 08-02-2008 à 19:33:38   

Reply

Marsh Posté le 08-02-2008 à 19:37:26    

$Ma super variable => "${Ma super variable}"


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 08-02-2008 à 19:56:14    

Je en comprends pas ce que tu me laisse comme piste là.
Les variables sont passées en paramètre au lancement du script.
Je récupère dans le 1er ex :  
$1 ==> /chemin_vers_fichier/1.mp3
$2 ==> 2269.flv
$3 ==> chemin_de_destination/
 
Dans le 2eme exemple :  
$1 ==> /chemin_vers_fichier/Nom
$2 ==> de
$3 ==> fichier
 
Donc je perds l'incohérence entre ce que je passe et ce que je veux.


---------------
Pays et country_code traduits : https://www.iso-country-code.com
Reply

Marsh Posté le 08-02-2008 à 19:57:19    

Ton script, c'est pour extraire du son a partir d'un flv ?


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 08-02-2008 à 20:07:29    

oui mais ca pourrait etre n'importe quoi.
 
En fait je veux pouvoir passer à un script des parametres avec des espaces c'est tout.
Concrètement, s'il pourrait faire le café, j'aimerai bien lui passer comme paramètre de marque de café "Jacques Vabre" (qui contient un espace) et pas seulement "Nescafé"


---------------
Pays et country_code traduits : https://www.iso-country-code.com
Reply

Marsh Posté le 08-02-2008 à 20:09:34    

Perso, je poses des questions et je colle la réponse dans une variable que j'encadres proprement.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 08-02-2008 à 20:12:21    

Ah ok avec un read ?
Le truc c'est que les musiques arrivent continuellement. Je veux que tout soit full automatique (via une crontab). C'est le cas pour des musiques sans espaces mais pas avec.
La solution de renommer avant est envisageable mais contraignante dans mon cas.


---------------
Pays et country_code traduits : https://www.iso-country-code.com
Reply

Marsh Posté le 08-02-2008 à 20:33:13    

Tu peux récupérer mon "mplayer audio extractor" et l'adapter a ta sauce...


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 08-02-2008 à 20:49:04    

TU n'as pas compris ce que je voulais faire.
Le script est executé sur une version serveur de linux donc pas d'interface graphique.
Il n'y aura personne derriere la machine pour faire le boulot, ca doit être full automatique.
Et dans tous les cas, même avec ton "mplayer audio extractor", il faudra préciser le nom d'un fichier en entré donc le passer en paramètre donc le problème est le même.


---------------
Pays et country_code traduits : https://www.iso-country-code.com
Reply

Marsh Posté le 08-02-2008 à 22:32:09    

ragondin a écrit :

Normal me direz-vous, il y a des espaces, mais que ce soit en encadrant le parametre avec des guillemets simple/double ou en échappant les espaces, le script ne veut rien savoir, quand j'affiche la variable $1, j'obtiens toujours "/chemin_vers_fichier/Nom".

AMHA c'est à l'intérieur du script que se situe le problème, et pas seulement lors de l'appel dans le shell.
 
Par exemple, lorsque tu utilises ta variable $1, il faut toujours la mettre entre guillemets.


---------------
TriScale innov
Reply

Marsh Posté le 08-02-2008 à 22:32:09   

Reply

Marsh Posté le 08-02-2008 à 23:03:03    

Lu, appelles ton script avec :
 


./encode_flv.sh "/chemin_vers_fichier/Nom de fichier avec des espaces.mp3"  "2270.flv" "chemin_de_destination/"


 
Et au debut, tu ajoutes :


for i in "$@"; do
    echo "$i"
done


 
Ça afichera tous les paramètres de ton script et tu pourras vérifier qu'il sont bien entrés correctement.


---------------
[:arsunik]  Les tournois de badminton
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed