Convertir une commande Batch en une commande Bash [Résolu/Fermé]

Signaler
Messages postés
76
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
25 février 2015
-
Messages postés
76
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
25 février 2015
-
Bonjour, depuis un moment je travaille sur la création d'un installateur pour mon petit logiciel Batch/Bash et j'essaie de convertir cette ligne de code en Bash :

for /f "eol=; tokens=* delims=," %%a in (options.txt) do echo %%a>%%a.txt

Si se n'est pas possible j'aimerai trouver une alternative afin qu'après la saisit clavier d'un l'utilisateur ayant choisit dans une liste numéroté une à plusieurs options, cela résultant d'un fichier options.txt contenant les options de cette manière : 1,2,4,etc. je puisse tester la présence de celle-ci pour pouvoir ensuite affecter de nouvelles valeurs à de nouvelles variables.

Merci d'avance, all94

2 réponses

Messages postés
76
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
25 février 2015
6
Désolé, je viens de trouver la solution à mon problème :
il suffisais d'utiliser la commande sed pour remplacer les virgules par des espaces et récupérer le contenue du fichier avec options=$(cat options.txt).

Cordialement, all94
Messages postés
36299
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
5 979
Salut,

Il aurait été plus simple d'expliquer directement ce que tu voulais, plutôt que de nous mettre l'équivalent en batch ;-(

D'autant que "sed" me parait inutile, bash pouvant traiter ta demande tout seul :

$ cat options.txt 
1,2,3,4,5

$ option=$(cat options.txt) 

$ echo "${option}"
1,2,3,4,5

$ echo "${option//,/ }"
1 2 3 4 5
Messages postés
76
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
25 février 2015
6
Bonjour, merci de ta réponse mais je ne comprend pas ta dernière ligne car je m'y suis mis à Bash que depuis peu de temps et j'ai encore du chemin à parcourir pour m'améliorer.
Selon moi, tu rajoute des paramètre pour que les virgule devienne des espaces mais cela sans que cela ne soit effectif tout le temps, si un moment donné tu dois taper tout simplement le nom de la varable sans aucun paramètre. Après je peux me tromper étant donner que je ne fais que la déduire et que je ne la comprend pas vraiment.

Sinon voici le code qui fonctionne à présent pour une liste à 4 choix possible :
read -p "> " choixlaunch
echo $choixlaunch>options.txt
sed -e 's/,/ /g' options.txt>options.txt
choixlaunch=$(cat options.txt)
rm options.txt


Cordialement, all94
Messages postés
36299
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
5 979
La dernière ligne fait la même chose que ta ligne avec "sed". Dans bash on appelle ça le développement des paramètres. Là en l'occurrence c'est de la substitution de motif, tout comme sed, mais c'est propre au shell et on n'a pas besoin de faire appel à une commande externe.

$ A="1,2,3,4,5"

$ echo "${A}"
1,2,3,4,5

$ echo "${A}" | sed 's/,/ /g'
1 2 3 4 5

$ echo "${A//,/ }"
1 2 3 4 5
Messages postés
76
Date d'inscription
mardi 15 mai 2012
Statut
Membre
Dernière intervention
25 février 2015
6
Bonjour, merci beaucoup pour ta réponse, grâce à toi je vais pourvoir enrichir mes connaissances en programmation Bash.

Merci encore, all94