これはシェルスクリプトに電卓を書くことですが、2つのエラーがあり、解決策が見つかりません。
echo "---------Welcome to Simple Calculator--------"
echo "p=PLUS"
echo "m=MINUS"
echo "x=MULTIPLICATION"
echo "d=DIVISION"
read -p "Enter your choice" ch
if $ch -eq p
then
echo "Enter Two Number For PLUS"
read x
read y
echo "Sonuç: $((x+y))"
elif $ch -eq m
then
echo "Enter Two Number For MINUS"
read x
read y
echo "Sonuç: $((x-y))
elif $ch -eq x
then
echo "Enter Two Number For MULTIPLICATION"
read x
read y
echo "Sonuç: $((x\*y))"
elif $ch -eq d
then
echo "Enter Two Number For DIVISION"
read x
read y
echo "scale=2;x/y" | bc
else
echo "Stopping calculator"
fi
答え1
次のシェル構文チェッカーを使用します。https://www.shellcheck.net/引用符の欠落など、より明確な構文エラーを識別するのに役立ちます。
if ... then
ただし、これはテスト演算子が欠落している句には役立ちません。例は次のとおりです。
if $ch -eq p
実行しようとすると、ある種の「コマンドが見つかりません」というエラーで失敗します。 (そのため、質問にプログラムの実行結果を含めることが役に立ちます。)
おそらく意味するのは、数値比較ではなく文字列比較を実行するためにテスト演算子[[
..を使用することです。]]
if [[ "$ch" == p ]]
"$ch"
最後に、すべての変数が使用される場合は、二重引用符を使用するのが最善です$ch
。
答え2
減算部分に1つがありません"
(二重引用符)。
echo "Sonuç: $((x-y))