#1 Le 10/01/2008, à 22:52
- kimented
bash, besoin d'aide pour petit script
Salut,
Je me suis mis à la création de map pour urt4, et j'ai fais un petit script pour me créer le fichier contenant la map:
#!/bin/bash
cd /home/kimented/Desktop/mapping/publicworks
cp ./ut4_publicworks.bsp ./maps/
cp ./ut4_publicworks.srf ./maps/
cp ./ut4_publicworks.prt ./maps/
cp ./ut4_publicworks.map ./maps/
zip -r ut4_publicworks.pk3 maps levelshots scripts sound textures
cp ./ut4_publicworks.pk3 /home/kimented/.q3a/q3ut4
cp ./ut4_publicworks.pk3 /home/kimented/www/web/q3ut4
/home/kimented/UrbanTerror/run
Je fais pas mal de test des maps, et par conséquent des fichiers portant le même nom peuvent etre de deux versions différentes... (cela est gênant quand je teste en lan, avec autodownload de la map depuis un serveur local). Comment faire pour indenter le nom de la map à chaque création d'un nouveau fichier (ut4_publicworks001.pk3) ?
Hors ligne
#2 Le 10/01/2008, à 23:32
- schaars
Re : bash, besoin d'aide pour petit script
La réponse à ce problème m'intéresserait également.
Je pense que c'est possible avec des grep, sed, cut et tee mais je n'en sais pas plus.
Le linux des uns est l'OS/2 des autres (Thom E. Gemcity)
Hors ligne
#3 Le 10/01/2008, à 23:55
- yleetiny
Re : bash, besoin d'aide pour petit script
une simple boucle suffit... (à rajouter juste avant la commande zip)
(...)
i=0
#teste pour savoir l'existence du fichier dans le répertoire courant
if [ -f "ut4_publicworks_${i}.pk3" ] ; then
i=$(( $i + 1 ))
fi
#construction du nom
nom="ut4_publicworks_${i}.pk3"
zip "$nom" (....)
cp "$nom" /home/kimented/.q3a/q3ut4
(...)
EDIT: j'avais mal lu ton post...j'avais oublier de zipper le tout avant
Dernière modification par yleetiny (Le 11/01/2008, à 00:02)
Ordinateurs : SONY VAIO C2Z/B & EEEPC 701
Merci de mettre [RESOLU] dans vos postes si le problème est réglé,
et Merci de partager vos expériences
Hors ligne
#4 Le 11/01/2008, à 00:04
- Fake
Re : bash, besoin d'aide pour petit script
Si tu veux conserver le numéro d'un lancement sur l'autre je sais pas... je m'orienterai dans la sauvegarde du nombre dans un ptit fichier et une relecture en début de script...
Avec les redirection... du genre
echo $i > ${HOME}/valeur_de_i
tu obtiens un fichier valeur de i dans ton home qui contient juste la valeur de i...
et avec read on doit pouvoir la lire en début de script avec l'utilisation de << qui permet de lire dans un fichier au lieu de l'entrée standard...
C'est assez bien détaillé dans des tas de manuels un peu partout sur le net... j'arrive pas a retrouvé celui que j'ai vu l'autre jour qui était très bien...
Dernière modification par Fake (Le 11/01/2008, à 00:04)
Hors ligne
#5 Le 11/01/2008, à 11:59
- schaars
Re : bash, besoin d'aide pour petit script
(...)
i=0
#teste pour savoir l'existence du fichier dans le répertoire courant
if [ -f "ut4_publicworks_${i}.pk3" ] ; then
i=$(( $i + 1 ))
fi
#construction du nom
nom="ut4_publicworks_${i}.pk3"
zip "$nom" (....)
cp "$nom" /home/kimented/.q3a/q3ut4
(...)
C'était tout simple et c'est de ça que j'avais besoin, merci
Le linux des uns est l'OS/2 des autres (Thom E. Gemcity)
Hors ligne
#6 Le 11/01/2008, à 18:51
- kimented
Re : bash, besoin d'aide pour petit script
(...)
i=0
#teste pour savoir l'existence du fichier dans le répertoire courant
if [ -f "ut4_publicworks_${i}.pk3" ] ; then
i=$(( $i + 1 ))
fi
#construction du nom
nom="ut4_publicworks_${i}.pk3"
zip "$nom" (....)
cp "$nom" /home/kimented/.q3a/q3ut4
(...)
Ok mais il faut alors que je garde tous les fichiers créés: si je supprime le fichier "0" il sera automatiquement recréé. La méthode de Fake me semble meilleure, si j'ai bien compris la commande echo crée un fichier? Je vais essayer avec ça.
Merci à vous.
Hors ligne
#7 Le 11/01/2008, à 19:00
- Fake
Re : bash, besoin d'aide pour petit script
en fait non ... je me suis sans doute un peu embrouillé ... je suis pas non plus tres avancé dans mon aprentissage du shell ... :-)
Ce qui crée un fichier est la redirection de la sortie standard des commandes a l'aide du >>...
l'explication ici : http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/ar01s05.html
echo ne fait que afficher la valeur de i et on redirige cet affichage dans le fichier avec le >
tu verra dans la page du lien la différence entre > et >>, je pense qu'il est ici plus malin d'utiliser > car tu es sur de n'avoir qu'une valeur dans ton fichier...
(tu peux aussi enregistrer d'autres parametres... et faire un fichier de log par cette methode...)
[edit] : en fait ce cours est pas terrible j'avais déja trouvé mieux.. je suis en train de chercher...
[edit] : j'ai retrouvé c'est ca :http://download.gna.org/unix-initiation/unix-initiation-4.0.pdf
un peu long mais bien fait... beaucoup de choses...
ce qui t'intéresses maintenant est a la page 47.
Dernière modification par Fake (Le 11/01/2008, à 19:09)
Hors ligne
#8 Le 11/01/2008, à 19:24
- kimented
Re : bash, besoin d'aide pour petit script
Merci, mais j'ai déja cherché de mon coté, fais quelques tests, et là il suffit que je fasse le programme et c'est bon. J'édite après le manger .
Hors ligne
#9 Le 11/01/2008, à 19:27
- Fake
Re : bash, besoin d'aide pour petit script
je te conseille quand même la deuxieme doc... la police est moche mais elle est pas mal ... :-)
Hors ligne
#10 Le 11/01/2008, à 20:17
- kimented
Re : bash, besoin d'aide pour petit script
Voila mon programme tout beau qu'il est
#!/bin/bash
cd /home/kimented/mapping/publicworks
map="ut4_publicworks"
#numero de version
if [ -f "./version.txt" ]
then
version=`cat ./version.txt`
else
version="0"
fi
newversion=$(( $version + 1 ))
archive="${map}_${newversion}.pk3"
oldarchive="${map}_${version}.pk3"
echo "$newversion" > /home/kimented/mapping/publicworks/version.txt
echo "numéro de version: $newversion"#copie dans les repertoires
cp ./ut4_publicworks.bsp ./maps/
cp ./ut4_publicworks.srf ./maps/
cp ./ut4_publicworks.prt ./maps/
cp ./ut4_publicworks.map ./maps/#creation du fichier, nettoyage
zip -r $archive maps levelshots scripts sound textures
rm ./$oldarchive#deplacement et nettoyage
cp ./$archive /home/kimented/.q3a/q3ut4
rm "/home/kimented/.q3a/q3ut4/$oldarchive"
cp ./$archive /home/kimented/www/web/q3ut4
rm "/home/kimented/www/web/q3ut4/$oldarchive"
J'ai de bonnes bases en php, mais la syntaxe est très différente, ce qui fait que j'ai souvent des problemes sans que je sache d'o๠ça vien. J'ai mis du temps à comprendre que "var=h" ce n'est pas "var = h".
Hors ligne