0

我对 Unix 很陌生,这是我的第一个脚本之一。我似乎无法解决这个错误的数字错误,并在线搜索了答案。我没有太多的运气,所以我想我会转向这里。有人可以帮我吗,我不断收到这两个变量的错误数字错误。这是我的脚本,谢谢!:

#!/bin/ksh

dest=$1 

fileName=$2

id=$$

print_message()
{
   message="$1"
   echo "`date '+%m-%d-%y %T'`  $message" 

}


if [ $1 -eq "" ] ||  [ $2 -eq "" ]

        then 
        print_message "Parameters not satisfied"
        exit 1 
fi 



gpg --encrypt --recipient "$dest" "$fileName"


print_message "$id INFO: File Encrypted Successfully"
4

2 回答 2

1

你的问题出在这里:

if [ $1 -eq "" ] || [ $2 -eq "" ]

使用=代替-eq,后者用于数字而不是字符串。

您可能还需要在可能为空的参数周围加上引号,例如"$1".

于 2013-08-05T21:30:48.797 回答
0

这是因为你有用户-eq,这意味着数值。您需要=用于字符串。您的代码应如下所示:

#!/bin/ksh

dest=$1 

fileName=$2

id=$$

print_message()
{
   message="$1"
   echo "`date '+%m-%d-%y %T'`  $message" 

}


if [ $1 = "" ] ||  [ $2 = "" ]

    then 
    print_message "Parameters not satisfied"
    exit 1 
fi 



gpg --encrypt --recipient "$dest" "$fileName"


print_message "$id INFO: File Encrypted Successfully"

容易犯错误:)

于 2014-04-24T14:23:09.800 回答