检查参数的正确数量

我如何检查正确数量的参数(一个参数)。 如果有人试图在不传入正确数量的参数的情况下调用脚本,并检查以确保命令行参数确实存在并且是目录。

 #!/bin/sh if [ "$#" -ne 1 ] || ! [ -d "$1" ]; then echo "Usage: $0 DIRECTORY" >&2 exit 1 fi 

翻译:如果参数的数量不是(数字上)等于1,或者第一个参数不是目录,则将使用情况输出到stderr,并以失败状态码退出。

更友好的错误报告:

 #!/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 

cat 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 

像下面那样执行它 –

 ./script.sh directory1 directory2 

输出将像 –

 directory1 exit directory2 Does not exists 

你可以检查在命令行中使用$#传递的参数总数。例如,我的s​​hell脚本名是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 

输出将是hello-world