J'essaie de créer une chaîne et de la transmettre à rm
, mais j’ai du mal à le faire fonctionner. Je voudrais tout enlever dans MY_PATH
. Ci-dessous est ce que j'ai essayé.
MY_PATH=/my/directory/
echo ${MY_PATH}'*' # This works as expected.
rm -vfr ${MY_PATH}'*' # This doesn't.
EDIT: Je l'ai compris. J'ai eu une faute de frappe.
bash
bash-scripting
Mason
la source
la source
rm -vfr "$MY_PATH"
est parfaitement bien.Réponses:
Votre
echo
Est-ce que ne pas travaille correctement. Le shell est responsable de l’extension des caractères génériques, pas de rm.la source
rm -vfr "${MY_PATH}"/*
, en cas de fuite/
est oublié quandMY_PATH
est réglé. Dans son libellé actuel, la différence entreMY_PATH=/my/dir/
etMY_PATH=/my/dir
est-ce que ce dernier supprimera non seulement/my/dir
(le répertoire, pas seulement le contenu), mais supprimera également/my/dir1
,/my/directory123
,/my/directors_important_files
... Et, mieux encore, vérifiez pour vérifier celaMY_PATH
est effectivement défini - sinon (avec ma modification suggérée) vous essayez (mais échouerez probablement, sauf si vous êtes root) de supprimer tout ce qui se trouve sous/*
Vous n'avez pas besoin des guillemets, utilisez simplement:
rm -vrf ${MY_PATH}*
la source
$MY_PATH
contient des espaces.