Problème dans un script bash
Résolu
axolotus
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
gm -
gm -
Bonjour,
je suis entrain de créer des scripts de sauvegarde et dans ce cadre je découvre le langage bash
voici mon code
#!/bin/sh
#Declaration des variables
KWARTZ_LOCALE=/mnt/essai/
rm -rf "$KWARTZ_LOCALE"*
L'exécution de ce script devrait vider le contenu du dossier /mnt/essai mais rien ne se passe.
Alors que lorsque j'écris dans le script directement
rm -rf /mnt/essai/*
il exécute sans problème.
Ma question est donc la suivante comment utiliser la fonction rm avec une variable?????
Si quelqu'un a une idée, je suis preneur :)
Merci d'avance
je suis entrain de créer des scripts de sauvegarde et dans ce cadre je découvre le langage bash
voici mon code
#!/bin/sh
#Declaration des variables
KWARTZ_LOCALE=/mnt/essai/
rm -rf "$KWARTZ_LOCALE"*
L'exécution de ce script devrait vider le contenu du dossier /mnt/essai mais rien ne se passe.
Alors que lorsque j'écris dans le script directement
rm -rf /mnt/essai/*
il exécute sans problème.
Ma question est donc la suivante comment utiliser la fonction rm avec une variable?????
Si quelqu'un a une idée, je suis preneur :)
Merci d'avance
A voir également:
- Problème dans un script bash
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Bingo bash - Télécharger - Divers Jeux
- Bash addition ✓ - Forum Shell
9 réponses
Vire les quotes :
Intel Q6600 Debian Lenny//Gentoo
Sous Linux, 99% des bugs se situent entre le clavier et la chaise de bureau...
franz@maerix:~/test$ mkdir test1 franz@maerix:~/test$ cd test1/ franz@maerix:~/test/test1$ touch {1,2,3,4} franz@maerix:~/test/test1$ cd .. franz@maerix:~/test$ variable=/home/franz/test/test1/ franz@maerix:~/test$ echo $variable /home/franz/test/test1/ franz@maerix:~/test$ ls test1/ 1 2 3 4 franz@maerix:~/test$ rm -r -f $locale* franz@maerix:~/test$ ls test1/ franz@maerix:~/test$
Intel Q6600 Debian Lenny//Gentoo
Sous Linux, 99% des bugs se situent entre le clavier et la chaise de bureau...
Salut,
Bizarre ;-\
Rajoute ce qui est en gras dans ton script et exécutes-le, puis affiches-nous le résultat :
Bizarre ;-\
Rajoute ce qui est en gras dans ton script et exécutes-le, puis affiches-nous le résultat :
#!/bin/sh set -xv #Declaration des variables KWARTZ_LOCALE=/mnt/essai/ rm -rvf "$KWARTZ_LOCALE"*
sans les quotes ça donne rien n'ont plus.
j'ai modifié le script comme tu me l'a suggéré voici la reponse :
/mnt # : invalid optionurgekwartz.sh: line 2: set: -
/mnt # set: usage: set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
-sh: set:: command not found
et merci pour votre aide
j'ai modifié le script comme tu me l'a suggéré voici la reponse :
/mnt # : invalid optionurgekwartz.sh: line 2: set: -
/mnt # set: usage: set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
-sh: set:: command not found
et merci pour votre aide
Voila ce que donne ls -l /bin/sh
-rwxr-xr-x 1 admin administ 648420 May 19 23:03 /bin/sh*
Je suis sur un nas qnap et visiblement c'est un linux maison
J'ai exécuté le script sur une suse et oh miracle il fonctionne.
Cela doit donc venir du qnap ...
-rwxr-xr-x 1 admin administ 648420 May 19 23:03 /bin/sh*
Je suis sur un nas qnap et visiblement c'est un linux maison
J'ai exécuté le script sur une suse et oh miracle il fonctionne.
Cela doit donc venir du qnap ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
shopt -u cdable_vars
shopt -u cdspell
shopt -u checkhash
shopt -u checkwinsize
shopt -s cmdhist
shopt -u dotglob
shopt -u execfail
shopt -s expand_aliases
shopt -u extdebug
shopt -u extglob
shopt -s extquote
shopt -u failglob
shopt -s force_fignore
shopt -u gnu_errfmt
shopt -u histappend
shopt -u histreedit
shopt -u histverify
shopt -s hostcomplete
shopt -u huponexit
shopt -s interactive_comments
shopt -u lithist
shopt -s login_shell
shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nocasematch
shopt -u nullglob
shopt -s progcomp
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath
shopt -u xpg_echo
shopt -u cdspell
shopt -u checkhash
shopt -u checkwinsize
shopt -s cmdhist
shopt -u dotglob
shopt -u execfail
shopt -s expand_aliases
shopt -u extdebug
shopt -u extglob
shopt -s extquote
shopt -u failglob
shopt -s force_fignore
shopt -u gnu_errfmt
shopt -u histappend
shopt -u histreedit
shopt -u histverify
shopt -s hostcomplete
shopt -u huponexit
shopt -s interactive_comments
shopt -u lithist
shopt -s login_shell
shopt -u mailwarn
shopt -u no_empty_cmd_completion
shopt -u nocaseglob
shopt -u nocasematch
shopt -u nullglob
shopt -s progcomp
shopt -s promptvars
shopt -u restricted_shell
shopt -u shift_verbose
shopt -s sourcepath
shopt -u xpg_echo
Excuse moi j'ai lancé le sujet par erreur. Je t'ai mis le résultat du shopt -u
et merci pour ton aide
et merci pour ton aide
avec shopt -s extglob
ça marche pas non plus :(
d'autre part en appliquant le debugger :
sh -x /share/scripts/purgekwartz.sh
j'ai ce retour :
KWARTZ_LOCALE=$'/mnt/essai/\r'
' rm -rf '/mnt/essai/
est-ce normal ce \r à la fin de KWARTZ_LOCALE ?????
ça marche pas non plus :(
d'autre part en appliquant le debugger :
sh -x /share/scripts/purgekwartz.sh
j'ai ce retour :
KWARTZ_LOCALE=$'/mnt/essai/\r'
' rm -rf '/mnt/essai/
est-ce normal ce \r à la fin de KWARTZ_LOCALE ?????
Ca donne l'impression d'avoir écrit le script sous Windows puis poussé ça en brut de fonderie sur ta machine...
Essaie d'utiliser des guillemets :
Essaie d'utiliser des guillemets :
KWARTZ_LOCALE="/mnt/essai/"
Ta remarque gm m'a mis la puce à l'oreille. Bien que j'utilise uniquement vi le script de base était un .cmd d'un collègue que j'avais récupéré. Il ne fonctionnaient pas. J'ai donc converti le fichier en .sh sans plus de résultats et pour cause le fichier avait vraisemblablement rédiger sur un windows...
J'ai fait une recherche sur les format des fichiers depuis vi et je suis tombé sur ce site en anglais mais très intéréssant : https://vim.fandom.com/wiki/File_format
dans vi en tapant :set ff? (ff = file format) le réponse était fileformat=dos
J'ai donc tapé :
:update Save any changes.
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:w Write buffer using dos (CRLF) line endings.
et j'ai a nouveau véfifier le format
set ff?
fileformat=unix
et je l'ai exécuté et la miracle ça fonctionne :)
Je vous remercie tous de m'avoir apporté vos idées sans vous je n'aurai jamais trouvé ce coup tordu. C'est toujours la galère de reprendre le travail d'un autre...
MERCI A TOUS
au fait quelqu'un connait la différence entre .cmd et .sh?
J'ai fait une recherche sur les format des fichiers depuis vi et je suis tombé sur ce site en anglais mais très intéréssant : https://vim.fandom.com/wiki/File_format
dans vi en tapant :set ff? (ff = file format) le réponse était fileformat=dos
J'ai donc tapé :
:update Save any changes.
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:w Write buffer using dos (CRLF) line endings.
et j'ai a nouveau véfifier le format
set ff?
fileformat=unix
et je l'ai exécuté et la miracle ça fonctionne :)
Je vous remercie tous de m'avoir apporté vos idées sans vous je n'aurai jamais trouvé ce coup tordu. C'est toujours la galère de reprendre le travail d'un autre...
MERCI A TOUS
au fait quelqu'un connait la différence entre .cmd et .sh?