- paramètre avec * - [resolu] [script SH] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 11-01-2005 à 13:23:35
|
$ deplace.sh tutu rep1 rep2
Marsh Posté le 11-01-2005 à 15:12:54
Merci pour ta réponse.
Donc il n'est pas possible de passer le * en paramètre de mon script ?
(faire un ./deplace.sh tu* rep1 rep2 )
Marsh Posté le 11-01-2005 à 15:28:07
avec les quotes ca n'a pas l'air de marcher non plus (simples ou doubles)
Jarjar, le "mv" est la à titre d'exemple, tu as bien vu que je lance la commande
ce qui m'intéresse c'est le passage d'un paramètre contenant une *
mais c'est plus simple pour faire comprendre (sauf à quelques esprits retords )
Marsh Posté le 11-01-2005 à 15:35:32
apres discussion avec quelques autres personnes, il n'est apparement pas possible d'utiliser un paramètre avec *
Si vous avez la preuve du contraire, n'hésitez pas à poster, sinon c'est la solution apportée par black_lord qui est la bonne
Marsh Posté le 11-01-2005 à 15:51:00
andro@tux blabla $ ls
blabla.sh file1 file2 file3 fold
andro@tux blabla $ cat blabla.sh
#!/bin/bash
mv $1 $2
andro@tux blabla $ ./blabla.sh 'file*' fold/
andro@tux blabla $ ls -R
.:
blabla.sh fold
./fold:
file1 file2 file3
andro@tux blabla $
Marsh Posté le 11-01-2005 à 15:51:20
le * "étend" les paramètres, tu te retrouves alors avec un nombre inconnu de paramètres. A ce moment là tu dois passer rep1 et rep2 en premier comme arguments histoire de pas les perdre (pas obligé mais c'est plus simple). ensuite tu utilises "shift" pour dégager les arguments un par un
|
à l'arrache mais absolument sans garanties (surtout au niveau du test, man test est nécessaire).
Marsh Posté le 11-01-2005 à 16:39:09
apparement le grand secret se situe dans l'utilisation des quotes
black_lord > j'ai testé le dernier script
l'idée est bonne mais ca marche pas, il claque une erreur sur le shift inclus dans la boucle while
donc en bidouillant, j'ai fait ca :
-------------------------
#!/bin/sh
orig=$1
shift
dest=$1
shift
cd ${orig}
mv $1 ${dest}
---------------------------
et la ô joie, c'est le script d'andromede
?> deplace.sh rep1 rep2 t* Ne fonctionne pas
?> deplace.sh rep1 rep2 "t*" Fonctionne
?> deplace.sh rep1 rep2 't*' Fonctionne
(et à noter que le script d'andromede fonctionne, bien que le paramètre* soit passé en premier)
Voilou, je n'ai pas grand chose à ajouter, merci pour votre aide
Marsh Posté le 11-01-2005 à 13:14:52
Bonjour,
j'ai un petit souci de syntaxe :
je cherche à faire un script qui déplace des fichiers d'un répertoire vers un autre :
la ligne de commande donne qqch comme ca :
?> deplace.sh tutu* rep1 rep2
(ca devrait déplacer tous les fichiers tutu* contenus dans rep1 dans le répertoire rep2)
Or voila mon probleme :
l'étoile n'est pas récupérée dans le paramètre, donc le script essaie de me déplacer un fichier nommé "tutu", ce qui ne correspond pas vraiment à mes attentes ;)
voici la version super basique du script :
###################
# DEBUT DU SCRIPT #
###################
script=`basename $0`
if [ $# -lt 4 ]; then
echo "$script : manque d'arguments"
exit 1
else
echo $1
echo $2
echo $3
mv $2/$1 $3/
exit 0
fi
##########################
Merci pour votre aide
Message édité par Pouille42 le 11-01-2005 à 15:36:00