2013-10-28 37 views
0

我很流利使用Java,但我有一個困難的過渡到慶典使用bash的算術函數援助

完整的命名下面arith完成以下任務的功能:

  • 如果變量a的值小於變量b的值,則調用函數add,否則調用函數sub。

所以,到目前爲止的代碼是:

echo "Enter two integers on separate lines" 
read a 
read b 

add() 
{ 
    echo "$a + $b = $((a + b))" 
} 

sub() 
{ 
    echo "$a - $b = $((a - b))" 
} 

arith() 
{ 
    If{... # To be completed 
} 

我認爲它應該在的

arith() 
{ 
    //if(a<b, call function add) 
    //else(call function sub) 

格式,但我不知道該怎麼寫。

+1

這是bash,而不是csh。它們是兩個不同的shell,語法非常不同。 (而且bash對腳本來說更好。) –

+0

謝謝你,我標記爲不正確 –

+1

你還在標題和問題的第一段中提到了csh。 –

回答

2

除了功能可能不應該訪問全局變量,你可能會寫兩種:

arith() 
{ 
    if [ "$a" -lt "$b" ] 
    then add 
    else sub 
    fi 
} 

或者:

arith() 
{ 
    if [[ "$a" < "$b" ]] 
    then add 
    else sub 
    fi 
} 

通常情況下,你會寫代碼更像是:

add() 
{ 
    echo "$1 + $2 = $(($1 + $2))" 
} 

sub() 
{ 
    echo "$1 - $2 = $(($1 - $2))" 
} 

arith() 
{ 
    if [[ "$1" < "$2" ]] 
    then add "$1" "$2" 
    else sub "$1" "$2" 
    fi 
} 

因此:

$ arith 1 2 
1 + 2 = 3 
$ arith 2 1 
2 - 1 = 1 
$ arith 1 1 
1 - 1 = 0 
$