Réponses:
#!/bin/sh
if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
Traduction: Si le nombre d'arguments n'est pas (numériquement) égal à 1 ou si le premier argument n'est pas un répertoire, affichez l'utilisation vers stderr et quittez avec un code d'état d'échec.
Rapport d'erreurs plus convivial:
#!/bin/sh
if [ "$#" -ne 1 ]; then
echo "Usage: $0 DIRECTORY" >&2
exit 1
fi
if ! [ -e "$1" ]; then
echo "$1 not found" >&2
exit 1
fi
if ! [ -d "$1" ]; then
echo "$1 not a directory" >&2
exit 1
fi
if [ "$#" -ne 1 ] ; thenou l' autre ou if ! [ -d "$1" ]; thenpour voir quelle clause cause le problème.
-dconcerne. Si vous souhaitez ajouter une vérification distincte, vous pouvez utiliser -epour vérifier l'existence.
-erenvoie true si le fichier existe. J'ai ajouté un rapport d'erreur plus convivial à la réponse.
chat script.sh
var1=$1
var2=$2
if [ "$#" -eq 2 ]
then
if [ -d $var1 ]
then
echo directory ${var1} exist
else
echo Directory ${var1} Does not exists
fi
if [ -d $var2 ]
then
echo directory ${var2} exist
else
echo Directory ${var2} Does not exists
fi
else
echo "Arguments are not equals to 2"
exit 1
fi
exécutez-le comme ci-dessous -
./script.sh directory1 directory2
La sortie sera comme -
directory1 exit
directory2 Does not exists
Vous pouvez vérifier le nombre total d'arguments qui sont passés en ligne de commande avec " $#"
Dites par exemple mon nom de script shell esthello.sh
sh hello.sh hello-world
# I am passing hello-world as argument in command line which will b considered as 1 argument
if [ $# -eq 1 ]
then
echo $1
else
echo "invalid argument please pass only one argument "
fi
La sortie sera hello-world
shellthat means/bin/sh