检查正确数量的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查正确数量的参数相关的知识,希望对你有一定的参考价值。

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

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

以上是关于检查正确数量的参数的主要内容,如果未能解决你的问题,请参考以下文章

检查正确数量的参数

xml Eclipse模板(代码片段)检查参数并最终抛出IllegalArgumentException

Spring boot:thymeleaf 没有正确渲染片段

PROCEDURE 的参数数量不正确;预期为 1,得到 0。无法从代码中确定错误

ora-20101是啥意思

来自 C# 的 PROCEDURE... 的参数数量不正确