如何检查正确数量的参数(一个参数)。如果有人试图在不传递正确数量的参数的情况下调用脚本,并检查以确保命令行参数确实存在并且是目录。
答案 0 :(得分:182)
#!/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
答案 1 :(得分:16)
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
答案 2 :(得分:5)
您可以使用 “expect(scope.pickCard).toHaveBeenCalled();
” 检查在命令行中传递的参数总数
比如说我的shell脚本名称是$#
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