Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2536 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  BASH Passage de paramètre contenant des espaces

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

BASH Passage de paramètre contenant des espaces

n°1009447
ragondin
Un pote ragondin c'est cool
Posté le 08-02-2008 à 19:33:38  profilanswer
 

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
mood
Publicité
Posté le 08-02-2008 à 19:33:38  profilanswer
 

n°1009449
Fork Bomb
Obsédé textuel
Posté le 08-02-2008 à 19:37:26  profilanswer
 

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


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
n°1009458
ragondin
Un pote ragondin c'est cool
Posté le 08-02-2008 à 19:56:14  profilanswer
 

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
n°1009459
Fork Bomb
Obsédé textuel
Posté le 08-02-2008 à 19:57:19  profilanswer
 

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 !"
n°1009461
ragondin
Un pote ragondin c'est cool
Posté le 08-02-2008 à 20:07:29  profilanswer
 

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
n°1009462
Fork Bomb
Obsédé textuel
Posté le 08-02-2008 à 20:09:34  profilanswer
 

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 !"
n°1009464
ragondin
Un pote ragondin c'est cool
Posté le 08-02-2008 à 20:12:21  profilanswer
 

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
n°1009467
Fork Bomb
Obsédé textuel
Posté le 08-02-2008 à 20:33:13  profilanswer
 

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 !"
n°1009471
ragondin
Un pote ragondin c'est cool
Posté le 08-02-2008 à 20:49:04  profilanswer
 

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
n°1009480
franceso
Posté le 08-02-2008 à 22:32:09  profilanswer
 

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
mood
Publicité
Posté le 08-02-2008 à 22:32:09  profilanswer
 

n°1009488
arsunik
ma tuxitude me beastifie
Posté le 08-02-2008 à 23:03:03  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  BASH Passage de paramètre contenant des espaces

 

Sujets relatifs
Migration Qmail : incompréhension sur un paramètre de configurationlancer un script bash qui tourne en boucle au demarrage
[Pas résolu !] Problème de script Bash dans script Perl[RESOLU] Bash : trappage de message
bash ./prog => progScript Bash : appeler un script avec une chaîne en option
shell bash : decouper un motProblème de script bash sous Cygwin
Interface graphique illisible, reprendre controle avec parametre std ? 
Plus de sujets relatifs à : BASH Passage de paramètre contenant des espaces


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR