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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [script SH] - paramètre avec * - [resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[script SH] - paramètre avec * - [resolu]

n°618541
Pouille42
Posté le 11-01-2005 à 13:14:52  profilanswer
 

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
mood
Publicité
Posté le 11-01-2005 à 13:14:52  profilanswer
 

n°618545
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 11-01-2005 à 13:23:35  profilanswer
 


for i in `ls $1*`
do
mv $2/${i} $3
done


 
$ deplace.sh tutu rep1 rep2


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°618608
Pouille42
Posté le 11-01-2005 à 15:12:54  profilanswer
 

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 )

n°618609
gentoouser
Posté le 11-01-2005 à 15:16:52  profilanswer
 

avec des quotes ?

n°618610
Jar Jar
Intaigriste
Posté le 11-01-2005 à 15:18:54  profilanswer
 

T'as besoin d'un script pour ça ????
 
mv rep1/tutu* rep2/

n°618614
Pouille42
Posté le 11-01-2005 à 15:28:07  profilanswer
 

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 ;) )

n°618620
Pouille42
Posté le 11-01-2005 à 15:35:32  profilanswer
 

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

n°618634
andromede1​82
Posté le 11-01-2005 à 15:51:00  profilanswer
 

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 $

n°618635
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 11-01-2005 à 15:51:20  profilanswer
 

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
 


 
orig=$1
shift
dest=$1
shift
 
while [ $$ -gt 0 ]
do
mv ${orig}/$1 ${dest}
shift
done  


 
à l'arrache mais absolument sans garanties (surtout au niveau du test, man test est nécessaire).


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°618661
Pouille42
Posté le 11-01-2005 à 16:39:09  profilanswer
 

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 :)
 


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

  [script SH] - paramètre avec * - [resolu]

 

Sujets relatifs
Je cherche script, qui déplace un fichier dans un dossier avec son nom[RESOLU]Serveur ftp sous ubuntu avec glftpd
[newbie][Résolu] Comment installer glut sous knoppix simplement ?[Résolu]XChat : Autojoin channels avec password ?
[resolu]lancement applications lent sur debian[RESOLU] Disque Dur SATA : mounter avec fstab ?
[résolu]FC2 Mozilla Mail plante silencieusement[résolu]jouer à un fps en écoutant de la musique
Démarrage sans carte graphique après recompilation du kernel (résolu)script ssh
Plus de sujets relatifs à : [script SH] - paramètre avec * - [resolu]


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