Comment puis-je vérifier le nombre correct d'arguments (un argument). Si quelqu'un tente d'appeler le script sans transmettre le nombre correct d'arguments, et vérifie que l'argument de ligne de commande existe réellement et constitue un répertoire.
#!/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, exportez l'utilisation vers stderr et quittez avec un code d'état d'échec.
Rapport d'erreur 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
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
l'exécute 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 passés en ligne de commande avec "$#
" Say for Example mon nom de script Shell est hello.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