web-dev-qa-db-fra.com

Vérification du nombre correct d'arguments

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.

127
Andrew K
#!/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
186
Laurence Gonsalves

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
18
VIPIN KUMAR

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

7
HaSnen Tai