0

簡単な計算を行う小さなプログラムを作成していますが、実行できません。「予期しないファイルの終わり」を出力するだけです。エラーが見つからないようです..?

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

3 に答える 3

2

一見したところ、スクリプトには次の 2 つの問題があります。

  • until [ $second_num -ne 0 ]; do

    を初期化しない$second_numので、0 を何も比較しようとしています。

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

    &&条件付き実行演算子です。(単一の) 角括弧内の 2 つの式の AND 演算子は です-a

于 2013-03-30T21:42:59.637 に答える
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
于 2013-03-30T22:11:20.877 に答える