参数控制 - Bash

时间:2017-09-20 19:07:59

标签: bash shell unix if-statement

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

3 个答案:

答案 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;