Il s’agit (avant de lancer une commande plus utile) d’afficher, selon les options la liste des fichiers.
Ce script me paraît simple, mais — quelles que soient le nombre d’ options (0, 1 ou 2) — j’obtiens le message d’erreur suivant:
/usr/local/bin/renommerNomDuCompte.sh: ligne 35: ls : commande introuvable
Le script (sans certaines lignes de commentaire):
#!/bin/bash --
# Renommer les comptes en nom plus humains
# Sans option = tous les fichiers du répertoire courant
# 1 option = le(s) nom(s) de fichier(s) dans le répertoire courant
# 2 options= autre répertoire
# Dans la chaine du nom,
# remplacer: X par: Y
NOM="$1"
DIR="$2"
if [[ -z "$DIR" ]]
then
DIR=$(pwd)
fi
if [[ -z "$NOM" ]]
then
PATH="${PWD}/*"
else
PATH=${DIR}/${NOM}
fi
# Commande:
ls "$PATH"
echo « $PATH » donne toujours un nom de chemin valide, ,d’ailleurs, la commande « ls » seule ou avec un nom explicite, donne la même erreur
La commande stat produit le même message, ce n’est donc pas lié directement à ls spécifiquement
Un script Perl personnel renvoie le même message «not found» pour 2 commandes:
sed et grep (les seules commandes du shell utilisée dans «system»
J’utilise ce script depuis des années, quotidiennement, sans jamais de problème.
Un script simple comme
#!/bin/bash --
ls "$PWD"
ne produit pas cette erreur.
Quelle est donc la ligne de mon code qui péche?
Il ne contient que des variables et des tests dans des conditions if très simples.