2013-03-30 55 views
0

我正在創建一個小程序,它可以做一些簡單的數學運算,但不能運行它。它只是輸出「意外的文件結束」。我似乎無法找到錯誤..?在bash文件中意外的eof錯誤

#!/bin/bash 

until [ $second_num -ne 0 ]; do 
    echo "Enter number 1:" 
    read first_num 
    echo "Enter number 2:" 
    read second_num 
    echo "Cannot divide by 0. Start over." 
done 

result=0 
if [ $first_num -ne 999 && $second_num -ne 999 ]; then 
    let result=$((first_num/second_num)) 
    echo $result  
    echo "Program finished!" 
else 
    echo "You have exited the program." 
    exit 0 
fi 

number=1 
while [ $number -lt 100 ]; do 
    echo $number 
    let number=$(($number % 5)) 
    echo $number >> sample.txt 
done 
+2

學習使用:'sh -x'和'sh -nv'來調試它。通常,意想不到的EOF意味着無匹配的引號或類似的問題,或者一個不完整的循環結構。目前尚不清楚爲什麼你報告'不能用0除以不測試任何東西。我懷疑你展示的代碼不是你想要調試的代碼;你顯示的代碼不會給你所說的錯誤。 'if'中的'&&'應該寫成'-a' - 這是一個缺陷。 –

回答

2

第一眼我看到2個問題與你的腳本:

  • until [ $second_num -ne 0 ]; do

    你不初始化$second_num,所以你要比較0不了了之。

  • if [ $first_num -ne 999 && $second_num -ne 999 ]; then

    &&conditional execution operator。 (單個)方括號內的兩個表達式的AND運算符爲-a

1

我不知道你正在嘗試做的,但下面的代碼應該沒有任何錯誤

#!/bin/bash 

until [ $second_num -ne 0 ]; do 
    echo "Enter number 1:" 
    read first_num 
    echo "Enter number 2:" 
    read second_num 
    echo "Cannot divide by 0. Start over." 
done 

result=0 
if [ "$first_num" -ne "999" -a "$second_num" -ne "999" ]; 

then 
    let result=$(($first_num/$second_num)) 
    echo $result  
    echo "Program finished!" 
else 
    echo "You have exited the program." 
    exit 0 
fi 

number=1 
while [ $number -lt 100 ]; do 
    echo $number 
    let number=$(($number % 5)) 
    echo $number >> sample.txt 
done 
+0

它會運行,但由於未初始化的'$ second_num',它仍然會顯示警告。 –

+0

是的,它會顯示警告.. – RBH

0

我的bash版本4下執行,沒有問題(沒有語法錯誤)做工精細, 但一些語義錯誤,可變second_num是未定義和& &在if語句 線3:[:-ne:一元運算符預期 輸入數字1:輸入號碼2:不能被0分割。重新開始。 第12行:[:missing`]' 您已退出程序。

再次發送腳本