私はラボで次のスクリプトを持ってコースを取っています:これは、例えば、Method 2 Answer is expr $fNumber - $sNumber
代わりのMethod 2 Answer is expr 20
として出力を生成バッシュexprの出力問題
#/bin/bash
#
# arithmeticLab
# demonstrates arithmetic, functions and simple if clauses
# three methods are used for arithmetic.
# the exercise requires only one.
# the three methods are:
# 1) let
# 2) expr
# 3) $((...))
# The user will input a letter and two numbers.
# the letter will
# be a(dd), s(ubtract), m(ultiply), d(ivide)
# to select an
# arithmetic operation.
# Functions. must be before the main part of the script
#
adder() {
# method 1. use let
let answer1=($fNumber + $sNumber)
# method 2. use expr
answer2="expr ${fNumber} + ${sNumber}"
# method 3. use $((...))
answer3=$(($fNumber + $sNumber))
} # end adder function
#--------------------------------
subtracter() {
# method 1. use let
let answer1=($fNumber - $sNumber)
# method 2. use expr
answer2='expr $fNumber - $sNumber'
# method 3. use $((...))
answer3=$(($fNumber - $sNumber))
} # end subtracter function
#---------------------------------------
multiplyer() {
# method 1. use let
let answer1=($fNumber * $sNumber)
# method 2. use expr
answer2='expr $fNumber * $sNumber)'
# method 3. use $((...))
answer3=$((fNumber * $sNumber))
} # end multiplyer function
#-------------------------------------
divider() {
# method 1. use let
let answer1=($fNumber/$sNumber)
# method 2. use expr
answer2='expr $fNumber/$sNumber'
# method 3 use $((...))
answer3=$(($fNumber/$sNumber))
} # end divider function
# End of functions
#
# Main part of the script
# check that user provided a letter and two numbers
# does not checkt o see if the user put in
# an incorrect letter
# which wil simply display messages without an answer
if [ $# -lt 3 ]
then
echo ""
echo "Usage: Provide an operation (a,s,m,d) and two numbers"
echo "Syntax: "$arithmetic.sh s 40 2" will produce output of "40 - 2.""
echo ""
exit 1
fi
#-----------------
# set the input number to variables to pass to the functions
#
fNumber=$2
sNumber=$3
if [[ $1 == "a" ]]
then
adder
fi
if [[ $1 == "s" ]]
then
subtracter
fi
if [[ $1 == "m" ]]
then
multiplyer
fi
if [[ $1 == "d" ]]
then
divider
fi
#-------------------------------
# Present the answers for all three methdos
#
echo "Method 1 Answer is $answer1"
echo "Method 2 Answer is $answer2"
echo "Methdo 3 Answer is $answer3"
。
入力は、私は成功せずANSWER2 = exprの...行に二重引用符、一重引用符と{ブラケットを使用してみました
70から30を減算する
script.sh m 30 50 to multiply 30 by 50
又は
script.sh s 70 30
ようなものであるべきです。
助けてください。ありがとうございました!
前に、それぞれの行は、あなたのコードはほとんど読めなくなります後にバッククォートを置きます。テキストブロックをコードセクションとしてマークするには、エディタでそれを選択し、各行を4文字ずつインデントする '{}'ボタンをクリックします。これにより、必要な効果が得られます。 –
また、質問に対して* minimal *、* complete *、* verifiable *の例を構築する方法を説明するhttp://stackoverflow.com/help/mcveに従ってください。 –
... 'expr'に問題がある場合、' expr'を含む部分だけを表示し、デモする必要のないもの(ユーザ入力や妥当性チェックなど)を削除してくださいその問題。 (もちろん、操作する値が必要ですが、値はハードコードすることができます)。 –