#1 Le 21/05/2007, à 09:26
- toufalk
[résolu][bash-script]espaces dans variable = problème
Je m'amuse ssh:
Je voudrais faire un script pour envoyer un fichier par scp, puis tester si il est bien sur l'ordi distant.
Je choisie un fichier avec zenity, puis je l'envoie sur un ordi distant avec scp. Jusque là, tout va bien.
Mon problème, c'est après : si il y a des espaces dans le nom du fichier, ça ne va plus:
toufalk@laptop:~$ envoie-teste 03\ -\ Le\ jazz.ogg
envoi du fichier...
03 - Le jazz.ogg 100% 5608KB 5.5MB/s 00:00
teste du fichier:
ls: 03: No such file or directory
ls: -: No such file or directory
ls: Le: No such file or directory
ls: jazz.ogg: No such file or directory
voici mon script:
#!/bin/bash
if test -e "$1"
then
echo "envoi du fichier..."
scp "$1" distant:
echo "teste du fichier:"
ssh distant ls -l "$1"
else
echo "Le fichier $1 n'existe pas..."
exit 1
fi
Comment faire pour faire comprendre à ls que c'est un seul fichier?
Dernière modification par toufalk (Le 21/05/2007, à 12:18)
Hors ligne
#2 Le 21/05/2007, à 10:57
- toto4455
Re : [résolu][bash-script]espaces dans variable = problème
en rajoutant les \" cela devrait passer . ( cmd="ls -l \"$1\" " )
envoie-teste "$(zenity --file-selection)"
#!/bin/bash
if test -e "$1"
then
echo "envoi du fichier..."
scp "$1" distant:
cmd="ls -l \"$1\" "
echo "teste du fichier:"
ssh distant "$cmd"
else
echo "Le fichier $1 n'existe pas..."
exit 1
fi
#3 Le 21/05/2007, à 12:17
- toufalk
Re : [résolu][bash-script]espaces dans variable = problème
Ah bah oui, ça marche... c'est bizarre, je pensais avoir essayé... faut dire que j'ai beaucoup tâtonné! Je me met doucement au bash-script et au début, dur dur!! Maintenant, je vais pouvoir finir mon petit script. En fait, ce que j'ai donné n'est qu'un petit bout. Je cherche à imprimer depuis un ordi distant : zenity pour choisir le fichier, scp pour transferer, puis ssh d'un petit script sur distant pour lancer lpr et effacer le fichier... Il y a peut-être plus simple, mais au moins ça marche Et puis comme ça, j'apprends
Merci beaucoup.
Hors ligne