2016-03-23 23 views
-1

Ben Fibonacci serisi (0 1 1 2 3 5 8) için bir linux kodu yazarım ama her zaman bana başka bir ifade gösteriyor.Linux if-else çalışmıyor

#!/bin/bash 
#This program will show series of Fibonacci numbers upto user input. 

echo -n "Enter the number for Fibonacci series: " 

read num 

if [ $# = 1 ] 
then 

x1 = 0 
x2 = 1 

echo "The Fibonacci series for the number $num is: "  

for ((y=0;$y<num; y=$y+1)) 
do 
echo -n "$x1 " 
x2 = $(($x2 + $1)) 
x1 = $(($x2 - $x1)) 

done 

else 

echo "Input is wrong" 

fi 

satement sonra ben ve döngü

+1

Tamsayıları cebirsel olarak karşılaştıran '-eq' kullanmalısınız. '=' dizgi karşılaştırması için kullanılır. Daha fazla ayrıntı için 'erkek testine bakın. – bnaecker

+0

Başlamak için mantığı anlamıyorum. Komut satırında beklenen argüman nedir? Ve num için fib hesaplaması nasıldır? – tink

+0

beklenen argümanı, 4, 5, 6 vb. Gibi bir sayıdır ve bu sayıya kadar olan sayı ile döngü yapar ve bu kadar çok sayıyı üretir. örneğin eğer kullanıcı 4 girerse, kullanıcı 4 –

cevap

2

için sana argümanların sayısını kontrol ediyoruz neden emin değilim hat 10 ve 11 hata var eğer ben kaldırabilir ancak sağlamanız gerekir ya eğer bir argüman veya sıfır argümanları kontrol etmek için değiştirin. Ayrıca sorunlara neden olacak birkaç alanınız var. Bunları kaldırmanız gerekecek. Son olarak, bnaecker'ın bahsettiği gibi, sayısal eşitliği karşılaştırırken = yerine -eq kullanmak isteyeceksiniz.

#!/bin/bash 
#This program will show series of Fibonacci numbers upto user input. 

echo -n "Enter the number for Fibonacci series: " 

read num 

if [ $# = 0 ] 
then 

x1=0 
x2=1 

echo "The Fibonacci series for the number $num is: "  

for ((y=0;$y<num; y=$y+1)) 
do 
echo -n "$x1 " 
x2=$(($x2 + $1)) 
x1=$(($x2 - $x1)) 

done 

else 

echo "Input is wrong" 

fi 
+0

numaradan fib alınıyor. –

+0

şimdi çalışıyor olabilir. Çalışıyor olabilir ama mantık hala doğal olarak kusurlu. :} – tink

+1

@tink, true, ancak SO ile ilgili soruları yanıtlarken, cevaplarımı minimumda tutmayı tercih ediyorum. Deneyimle, programcılar kendi başlarına hatalarını geliştirmeye ve öğrenmeye eğilimlidirler. –