CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème de retour chariot dans une variable shell

seikay
seikay
Niveau 10
16 août 2016 à 16:13:29

Bonjour, j'ai hélas un problème dans un script shell.
Je récupère les lignes d'un fichier dans un array

for j in `seq 0 $(($NUMB-1))`
do
            
    ligne=(` echo $(sed -n $(($j+1))'p' $PATH_TO_USER_GMAIL)`) 
    WORKER[$j]="$ligne"
            
done

Et à la suite du script je lance un script python avec divers arguments en ligne dont cette variable ${WORKER[$j]}

python runserver.py -a google -u ${WORKER[$n]} -p $password -k $GOOGLE_KEY_API -st $ST -l ${ToulonPos[$n]} -ns

Le problème c'est que j'ai remarqué que ${WORKER[$n]} contient un retour chariot et ça fait cela dans le terminal :

" -p password -k google_api_key -st 3 -l "43.1250634863, 5.95084302574" -ns

Une partie de la commande est coupé et quand je récupére les logs à cette endroit, la commande est entière mais il y a un saut de ligne avant "-p"

Quelqu'un aurait une solution pour enlever ce retour chariot ? :(

Je vous remercie d'avance pour votre aide

Message édité le 16 août 2016 à 16:15:38 par seikay
godrik
godrik
Niveau 30
16 août 2016 à 16:39:35

et tu as besoin de garder ce retour chariot? ou tu veux le virer? ou tu veux le remplacer par une espace?

seikay
seikay
Niveau 10
16 août 2016 à 17:07:27

Le 16 août 2016 à 16:39:35 godrik a écrit :
et tu as besoin de garder ce retour chariot? ou tu veux le virer? ou tu veux le remplacer par une espace?

J'aimerais bien l'enlever

godrik
godrik
Niveau 30
16 août 2016 à 17:12:35

ok. De facon general tu peux faire du tr ou du sed pour ca.
Mais ici c'est plus simple, parceque le retour pourrais venir du echo. et donc passer -n pourrait suffir.
Sinon un "tr -d \n" ou un "tr -d \r" devrait faire l'affaire.

seikay
seikay
Niveau 10
16 août 2016 à 17:21:15

Le 16 août 2016 à 17:12:35 godrik a écrit :
ok. De facon general tu peux faire du tr ou du sed pour ca.
Mais ici c'est plus simple, parceque le retour pourrais venir du echo. et donc passer -n pourrait suffir.
Sinon un "tr -d \n" ou un "tr -d \r" devrait faire l'affaire.

Je n'ai presque pas utiliser tr, comment l'utiliser sur une variable shell ? J'ai surtout vu son application sur des fichiers, mais je ne veux pas toucher au fichier seulement la variable.

godrik
godrik
Niveau 30
16 août 2016 à 17:30:27
$ VAR='foobar'
$ VAR=$(echo $VAR | tr -d o)
$ echo $VAR
fbar
seikay
seikay
Niveau 10
16 août 2016 à 17:42:21

Merci mais ça ne marche pas :-(

J'ai fait ceci :

ligne=$(sed -n $(($j+1))'p' $PATH_TO_USER_GMAIL)
WORKER[$j]=$(echo $ligne | tr -d /n)

mais dans les logs j'obtient toujours ça :

screen -AmdS account
 python runserver.py -a ptc -u account
 -p password -k api_key -st 3 -l 43.1109800015, 5.94862328792 -ns

On voit bien le saut de ligne à chaque fois
où account est contenu dans l'array WORKER

J'avais tout changé à cause de ça en mettant tout dans des array directement dans le script, mais j'aimerais absoulement récupéré tout ce que je veux pas des fichier.txt mais je n'arrive pas à enlever ce sauts de lignes :(

D'ailleurs pourquoi un retour chariot se glisse dans cette variable ? La lecture du fichier par sed n'est pas censé l'ignorer ?

Message édité le 16 août 2016 à 17:44:35 par seikay
godrik
godrik
Niveau 30
16 août 2016 à 18:03:45

Je n'arrive pas a reproduire ce comportement. mmm, tu as jouer avec IFS ?

bash ne devrait il pas convertir les retour a la ligne en espace avec la valeur de IFS par defaut ?

Tu es sur que ce n'est pas un probleme de ton log ?

seikay
seikay
Niveau 10
16 août 2016 à 18:09:10

Le 16 août 2016 à 18:03:45 godrik a écrit :
Je n'arrive pas a reproduire ce comportement. mmm, tu as jouer avec IFS ?

bash ne devrait il pas convertir les retour a la ligne en espace avec la valeur de IFS par defaut ?

Tu es sur que ce n'est pas un probleme de ton log ?

J'avais fait une manip avec IFS mais c'était pour régler le problème et avant de le faire j'avais le même problème.

Pour les log je fais un simple echo "ma_ligne_de_commande" > log.txt

Message édité le 16 août 2016 à 18:09:41 par seikay
seikay
seikay
Niveau 10
16 août 2016 à 18:16:43

Je crois que j'ai réglé le problème mais c'est un coup pour se moquer de moi :hap:

J'avais édité les fichiers txt avec notepad ++ alors que la j'ai tout supprimé et remplie les fichier txt avec un éditeur de texte linux comme nano et ça marche impeccable le le script python se lance et ça me donne ce que je voulais :)
Par contre j'ai pas vérifié les logs mais je pense qu'il n'y a pas besion

Une explication à cela ?

Message édité le 16 août 2016 à 18:19:03 par seikay
lokilok
lokilok
Niveau 17
16 août 2016 à 18:26:48

Dans ton message de 17:42:21 tu avais écris /n au lieu de \n.

Message édité le 16 août 2016 à 18:28:35 par lokilok
seikay
seikay
Niveau 10
16 août 2016 à 18:37:10

Le 16 août 2016 à 18:26:48 lokilok a écrit :
Dans ton message de 17:42:21 tu avais écris /n au lieu de \n.

Ah effectivement, merci pour la remarque.

En tout cas de m'avoir aider :)

godrik
godrik
Niveau 30
16 août 2016 à 19:54:50

la difference de fin de ligne entre windows et linux ? (\r\n contre \n)

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment