2013-08-05 59 views
0

我很熟悉Unix,這是我的第一個腳本之一。我似乎無法解決這個錯誤的數字錯誤,並在網上搜索了一個答案。我沒有太多的運氣,所以我雖然我會轉過來。有人可以幫助我,我不斷得到這個:兩個變量的錯誤數字錯誤。這裏是我的腳本,謝謝!:差多少錯誤KSH腳本

#!/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" 

回答

0

你的問題就在這裏:

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

使用=代替-eq,後者是爲數字而不是字符串。

您可能還需要環繞可能爲空參數報價,如"$1"

+0

當我使用==我得到一個未知的測試操作錯誤 – tacotuesday

+0

啊只是一個=謝謝! – tacotuesday

+0

@ user2640213,我的歉意,應該是一個'=',我已經修復了它。猜猜我一直在使用'bash'' [['太久了:-) – paxdiablo

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" 

容易犯的錯誤:)