检查参数的正确数量
我如何检查正确数量的参数(一个参数)。 如果有人试图在不传入正确数量的参数的情况下调用脚本,并检查以确保命令行参数确实存在并且是目录。
#!/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
你可以检查在命令行中使用“ $#
”传递的参数总数。例如,我的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
输出将是hello-world