我有一个Unix shell脚本,该脚本从命令行读取参数,然后在缺少参数的情况下退出。然后我用参数进行了测试,该参数应该可以正常工作,但是错误地退出。有人可以检查吗?
脚本:
#!/bin/ksh
##########################################################################
# Remote to upstream servers to check feed files without password #
# ELLA YE #
# Sept 20 2017 #
# Version 1 #
##########################################################################
RUNDIR=/tmp
UPSTREAM_USER="$1"
UPSTREAM_SERVER=$2
UPSTREAM_DIR=$3
FILE_NAME=$4
LOCAL_DIR=$5
echo $5
#if [[ ( "$1" = "" ) || ( "$2 = "" ) || ( "$3" = "" ) || ( "$4" = "" ) || ( "$5 = "" ) ]]
if [ $5 -eq "" ];
then
echo "Parameter missing"
exit 1;
fi
我的命令:
./sftpupstream.ksh abc abc.wlb2.nam.nsroot.net . .profile .
结果:
.
Parameter missing
bash-4.1$
将其放在脚本的顶部:
#!/bin/ksh
if [ $# -ne 5 ]; then
echo "$((5 - $#)) parameter(s) missing"
exit 1
else
# You code
fi
$#
返回传递给您脚本的参数数,因此,如果与5个脚本不同,则会退出。
echo "$((5 - $#))"
将进行数学并输出5中缺少多少个参数。
我想您正在寻找
if [ -z "$5" ]
then
echo "Parameter missing"
exit 1
fi
-Z开关将测试" $ 5"的扩展是否为空字符串。如果是一个空字符串,则执行身体。
请参阅此问题
什么是错误消息?
我的盲目猜测是您的报价。" $ 5"