Bash redirection simple d'un résultat dans un fichier

bonjour, je bloque sur un truck vraiment simple, je voudrais rediriger un résultat dans un fichier voila une example:

echo -n "Merci de m’indiquer quel map tu veux mettre par defaut "
read defaut
echo “$defaut” > map

le problème ici c’est que le résultat de $defaut n’est pas rediriger dans le fichier map et je ne comprend pas pourquoi.

sa doit être un truck tout con mais je trouve pas.

Ça marche pourtant, as tu les droits d’écriture sur map?

oui j’ai tous les droit mais je ne comprend pas pourquoi la redirection ne se fait pas je te copie tous mon code peut être que tu comprendra

#!/bin/sh clear cd serv1 ps x | grep serveur1 | cut -d " " -f 1 | xargs kill -9 map=dm_steamlab echo "la map par defaut et: $map si sa te convient appuis sur la touche entree" echo "sinon si tu veut changer donne moi une autre map" echo -n "quel map? " read map if [ "$map" = "" ]; then map=dm_steamlab player=2 echo "combien de joueurs?" read player screen -dmS serveur1 ./srcds_run -game hl2mp +ip 188.165.199.48 -port 27015 +maxplayers $player +map $map -tickrate 100 -autoupdate elif [ "$map" != "defaut" ]; then echo "combien de joueurs?" read player screen -dmS serveur1 ./srcds_run -game hl2mp +ip 188.165.199.48 -port 27015 +maxplayers $player +map $map -tickrate 100 -aut$ elif [ "$map" == "defaut" ]; then echo "CONFIGUATION PAR DEFAUT ACTIVER" echo -n "Merci de m'indiquer quel map tu veux mettre par defaut " read defaut echo "$defaut" > map echo "la map paramétrer par defaut et maintenant $defaut" fi

c’est bête de bloquer sur un truck aussi simple

La redirection > c’est pour écrire quelque chose dans un fichier (vérifie, tu devrais avoir un fichier “map” contenant la valeur). Mais c’est bien beau d’écrire dans un fichier si tu ne le lis jamais… :wink:

J’imagine (vu le peu d’explications) que le problème vient plutôt de l’initialisation de ta variable au début du script, qui devrait plutôt être du genre :

map=$(if [ -r map ]; then cat map else echo "dm_steamlab" fi )
Et aussi, essaye d’utiliser des chemins complets, ça évitera de disperser tes fichiers aux quatre coins du disque dur en fonction d’où tu appelles le script (le cd serv1 ne fonctionnera pas si tu appelles le script à partir du mauvais répertoire). En assumant que ton script se trouve dans le répertoire contenant le sous-répertoire serv1 :

enfaite j’ai pas fini la prog pour sa que je ne l’utilise pas as tu une idée pour que la redirection fonctionne ?

Ben le souci c’est que pris tel quel, ça fonctionne :

$ echo -n "Valeur ? " && read defaut && echo "$defaut" > map && cat map Valeur ? ESSAI ESSAI

Donc soit tu as des problèmes de permissions, soit le fichier “map” est écrit ailleurs que là où tu l’attends à cause du répertoire courant quand tu appelles le script. D’où l’intérêt de faire un cd vers un répertoire connu.
Pour t’en convaincre, au lieu de faire echo “$defaut” > map remplace map par un chemin absolu (par exemple /tmp/essai_map) tu verras que le fichier est bien créé.

c’est bon j’ai trouver merci quand même :wink:

Dans ce cas ça serait sympa d’expliquer, pour que d’autres qui auraient le même type de souci puissent savoir comment faire. :slightly_smiling:

c’est tout bête j’ai honte enfaite j’avais mis cd serv1/ donc sa allait dans serv1 -_- l’erreur et humaine :s