Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/04/2011, à 16:08

jcdc

[Résolu] Bash - Exporter sans interpréter.

Bonjour.

Voila, je suis en train de réaliser un script en Bash.
Après avoir poser plusieurs questions à l'utilisateur, il génère plusieurs autres scripts. Le soucis est que je n'arrive pas à dire à echo de ne pas interpréter son contenu. Voici un exemple de mon code :

echo "#!/bin/bash
  echo "Les images provenant d'une éventuelle exécution de ce script sont effacés."
  find ./images/ -name *.comp.* -delete
  echo "Les images potentiellement sauvegardées sont restituées."
  for file in $(find ./images/ -name *.bak.*)
  do
    newfile=$(echo $file | sed -e "s/.bak//g" )
    mv $file $newfile
  done" > toto.sh

Quelqu'un voit idée pour me dépatouiller de ce bordel?
Par avance merci.

Jcdc.

Dernière modification par jcdc (Le 19/04/2011, à 16:39)

Hors ligne

#2 Le 19/04/2011, à 16:19

AnsuzPeorth

Re : [Résolu] Bash - Exporter sans interpréter.

Bjr,
Utilses les simple cotes

echo 'une variable non interprété $var'

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 19/04/2011, à 16:23

redo_fr

Re : [Résolu] Bash - Exporter sans interpréter.

Salut,
Pour ce genre de manipulations, utilises plutôt des "herescripts" et met des "anti-slash" devant tes variables

cat <<!EOF! > toto.sh
#!/bin/bash
echo "Les images provenant d'une éventuelle exécution de ce script sont effacés."
find ./images/ -name *.comp.* -delete
echo "Les images potentiellement sauvegardées sont restituées."
for file in \$(find ./images/ -name *.bak.*)
do
    newfile=\$(echo \$file | sed -e "s/.bak//g")
    mv \$file \$newfile
done
!EOF!

[EDIT] Resultat:

cat toto.sh
#!/bin/bash
echo "Les images provenant d'une éventuelle exécution de ce script sont effacés."
find ./images/ -name *.comp.* -delete
echo "Les images potentiellement sauvegardées sont restituées."
for file in $(find ./images/ -name *.bak.*)
do
    newfile=$(echo $file | sed -e "s/.bak//g")
    mv $file $newfile
done

Dernière modification par redo_fr (Le 19/04/2011, à 16:27)


Il n'y a pas de mauvais outils, il n'y a que de mauvais ouvriers
- papy -
Personnellement, je crois que faire des procès est un signe que les affaires vont mal. Je ne dis pas que Microsoft va mal, ce n'est qu'un signe, pas un indicateur...
- Linus Torvalds -

Hors ligne

#4 Le 19/04/2011, à 16:38

jcdc

Re : [Résolu] Bash - Exporter sans interpréter.

AnsuzPeorth -> Merci pour ta proposition. C'est une chose que j'avais déjà essayé, mais j'ai des soucis avec mes find et sed. Mon echo les interprétait au lieu de les retranscrire.
redo_fr -> Ca marche du tonnerre. Il me reste plus que 2 choses à faire. Incorporer dans ce script les 200 autres lignes(j'allais pas tout mettre sur le fofo big_smile), et une fois fait, je vais regarder ce que c'est que ces "herescripts", car je connais pas, et je n'ai rien compris a ton code. Je sais juste que ça marche.
Merci en tout cas à vous 2.

Jcdc.

Hors ligne

#5 Le 19/04/2011, à 20:56

Watael

Re : [Résolu] Bash - Exporter sans interpréter.

Salut

en mettant EOF entre guillemets (simples ou doubles)

$ var=123
$ cat <<'EOF'
> echo "$var"
> EOF

echo "$var"
$ cat <<EOF
> echo "$var"
> EOF
echo "123"

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne