参数控制 - bash



我有一个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"

最新更新