我有一个unix shell脚本,它从命令行读取参数,然后在case参数丢失时退出。然后我测试了参数,它应该工作正常,但它退出错误。 有人可以查一下吗?
SCRIPT:
#!/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$
答案 0 :(得分:0)
我认为你在寻找
if [ -z "$5" ]
then
echo "Parameter missing"
exit 1
fi
-z开关将测试“$ 5”的扩展是否为空字符串。如果它是一个空字符串,则执行正文。
请参阅此question
答案 1 :(得分:0)
将它放在脚本的顶部:
#!/bin/ksh
if [ $# -ne 5 ]; then
echo "$((5 - $#)) parameter(s) missing"
exit 1
else
# You code
fi
$#
返回传递给脚本的参数数量,因此如果不同于5脚本将退出。
echo "$((5 - $#))"
将进行数学运算并输出5中缺少的参数数量。
答案 2 :(得分:-1)
错误讯息是什么?
我的盲目猜测是将你的变量引用。 " $ 5#34;