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 scripting bash

Paulop
Paulop
Niveau 12
13 janvier 2008 à 22:44:33

Salut

J´ai un gros soucis là, je dois faire un script gerant plusieurs fonction d´admin comme TP (noté de surcroit), sauf que j´ai un big soucis.

En effet j´ai un problème de guillemets :)

Exemple :

  1. !/bin/bash

read VAR

OPTION="-c \"$VAR\""
echo "sudo useradd ${OPTION} Jean"
sudo useradd ${OPTION} Jean

Cela ne fonctionne pas, pourtant si je recopie le echo et le colle cela fonctionne, c´est à s´en arracher les cheveux !! !

Si vous pouviez me répondre je serais immensemment reconnaissant.

Merci :)

Diablo150
Diablo150
Niveau 10
14 janvier 2008 à 00:13:34

J´ai testé ton script sans problèmes.
Peut être qu´on a pas la même version de bash (3.1.17 de mon coté)

Si ce sont les guillemets qui te font chier, tu peux peut-être les remplacer par: ´

Par exemple en python pour utiliser des guillemets dans une chaîne de caractère, sans avoir à utiliser \, je fais:
print ´"guillemets"´

Paulop
Paulop
Niveau 12
14 janvier 2008 à 11:52:49

Petite nouveauté, avec l´environnement ou sera corrigé le TP

VAR="-c coin coin"
sudo useradd "$VAR" Jean

Cela marche MAIS, dans la partie commentaire du /etc/passwd ya un espaces avant le comm :

: coin coin:

chris_27
chris_27
Niveau 10
14 janvier 2008 à 11:56:07

Le coup de mettre entre ´ pour avoir une chaîne avec des ", c´est valable aussi en bash (c´est pe ce que tu disais Diablo150, mais comme tu parlais de python juste après...) mais le $VAR ne sera pas remplacé s´il est entre ´ ´. :(

Sinon, si je comprends bien, le but est d´avoir dans la variable OPTION ce qui faut pour la commande useradd. Mais alors :
OPTION="-c $VAR"
est sans doute ce que tu veux. Toute mot commençant par $ est changée si elle est dans une chaîne entre " " (pas besoin de " supplémentaires).

Après, je ne sais plus ce que fait l´option -c mais si c´est censé recevoir plus de un mot. Si c´est le cas, peut-être que tu as besoin de :
OPTION="-c \"$VAR\""
effectivement.

Ah oui. Est-ce que ta variable passe au sudo ? :doute: Si tu crois que c´est ça le problème, essaie :
export OPTION=...

Paulop
Paulop
Niveau 12
14 janvier 2008 à 16:18:37

Ma variable passe au sudo.

Mon problème, ben ...

Quand je passe le tout à useradd, il me renvoie useradd --help

J´ai réussi à cibler que c´était les options avec un espace qui faisait ça, j´ai donc essayé de rajouter des guillemets, mais c´est pas probant.

C´est sans doute car les guillemets échapés sont litéraux et donc ne servent à rien de plus que ne rien mettre, mais je ne vois pas d´échapatoire. Du moins simple.

chris_27
chris_27
Niveau 10
14 janvier 2008 à 16:47:41

Hum... sh est si tricky... Je te laisse méditer ça :

chris@tarsonis:~/Temp$ cat test.sh

  1. !/bin/sh

read VAR

OPTION="-c \"$VAR\""

for i in $OPTION ; do
echo $i
done

echo

for i in "$OPTION" ; do
echo $i
done
chris@tarsonis:~/Temp$ sh test.sh
titi toto tata
-c
"titi
toto
tata"

-c "titi toto tata"

:-)

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