Ajout dans un fichier en bash

Bonsoir,

Malgré ce titre peu explicite, je vais vous faire un petit topo.
Voilà, je suis actuellement scripteur pour PlayOnLinux (-> Vous savez ce que c’est tout de même).
J’ai actuellement fini d’écrire les scripts pour Mass Effect ainsi que Mass Effect 2.
Les scripts des jeux étant codés en Bash.

Le problème survient pour le script des launchers qui sont de cette forme là :

#!/bin/bash PATH="/home/berillions/.PlayOnLinux/WineVersions/1.1.38-ME/usr/bin/:$PATH" export WINEPREFIX="/home/berillions/.PlayOnLinux/wineprefix/ME" export WINEDEBUG="-all" cd "/home/berillions/.PlayOnLinux/wineprefix/ME/drive_c/Program Files/Mass Effect/Binaries" wine "MassEffect.exe" $@

Il faut que j’édite ce fameux launcher lorsque je suis encore dans le script d’installation afin de rajouter une option avant “wine”. En quelque sorte, cela donnerait :

#!/bin/bash PATH="/home/berillions/.PlayOnLinux/WineVersions/1.1.38-ME/usr/bin/:$PATH" export WINEPREFIX="/home/berillions/.PlayOnLinux/wineprefix/ME" export WINEDEBUG="-all" cd "/home/berillions/.PlayOnLinux/wineprefix/ME/drive_c/Program Files/Mass Effect/Binaries" WINEFORCEMOUSEWARP=yes wine "MassEffect.exe" $@

Ma question est :
Comment coder l’édition d’un fichier bash en bash ( :smt005 ) pour rajouter une option à un certain endroit d’une certaine ligne…

PS : J’ai essayé d’être le plus clair possible… :mrgreen:
Et pour les curieux, ME et ME2 ont besoin de cette option pour enlever le problème de la souris

Merci

Cette option est obligatoire j’imagine? Alors pourquoi ne pas l’ajouter simplement à la ligne de commande wine? En fait, je ne comprends pas pourquoi tu dois rajouter quelque chose à ton script, si cela doit-être fait à chaque fois. Autant le mettre pour de bon, et on n’en parle plus.

Si cela pouvait être si simple. En faite, cette option option est obligatoire pour ces 2 jeux MAIS pas pour tous les jeux.

C’est cette simple ligne qui crée le bout de code dans le script du launcher. La seule solution est donc d’éditer ce launcher après sa création.

Bonsoir,

Donc si j’ai bien compris le batch est créé et tu veux le modifier.

Pourquoi ne pas parcourir le fichier et si tu rencontre la ligne que tu souhaite modifier tu la change et tu continue ton action

commentcamarche.net/faq/5027 … -par-ligne

[Algo]
Tu récupère le path du fichier
Tu le parcours ligne par ligne
Chaque ligne tu la colle dans un autre fichier
Si tu tombe sur ta ligne à modifier tu la modifie
Tu supprime le launcher
tu le remplace par le nouveau que tu as créé ligne par ligne.
[/Algo]

Il y a sûrement plus simple mais en attendant cela peux fonctionner.

Dans l’univers unix ou gnu, il existe des outils puissants. Puis il existe des outils qui dépassent l’entendement par leur puissance. Dans cette seconde catégorie je place des choses comme zsh, perl, awk ou bien sur sed :
Avec sed il suffit de faire ça :

Il peut être raccourcis comme ça :

Il est possible de faire ça sur un flux si c’est plus agréable. Mais d’avis qu’il serais intéressant de revoir l’architecture pour que chaque jeu puisse déclarer ses options qui seraient intégrées au lanceur.

Ça fait plaisir d’aider à contribuer à un logiciel d’une relative envergure :slightly_smiling:

Merci beaucoup MisterFreez, cela fonctionne très bien :wink: