J'essaie d'écrire un script extrêmement simple dans Ubuntu qui me permettrait de lui passer un nom de fichier ou un répertoire, et être capable de faire quelque chose de spécifique quand c'est un fichier, et autre chose quand c'est un répertoire. Le problème que je rencontre est lorsque le nom du répertoire, ou probablement des fichiers aussi, a des espaces ou d'autres caractères échappables sont dans le nom.
Voici mon code de base ci-dessous et quelques tests.
#!/bin/bash
PASSED=$1
if [ -d "${PASSED}" ] ; then
echo "$PASSED is a directory";
else
if [ -f "${PASSED}" ]; then
echo "${PASSED} is a file";
else
echo "${PASSED} is not valid";
exit 1
fi
fi
Et voici la sortie:
andy@server~ $ ./scripts/testmove.sh /home/andy/
/home/andy/ is a directory
andy@server~ $ ./scripts/testmove.sh /home/andy/blah.txt
/home/andy/blah.txt is a file
andy@server~ $ ./scripts/testmove.sh /home/andy/blah\ with\ a\ space.txt
/home/andy/blah with a space.txt is not valid
andy@server~ $ ./scripts/testmove.sh /home/andy\ with\ a\ space/
/home/andy with a space/ is not valid
Tous ces chemins sont valides et existent.
if
- Leselse
constructions dans Bash prennent également en chargeelif
. Juste FYI.