Das Programm arbeitet im Fall fein "+", "-", "/"Produkt zweier Eingangsgröße in der Schale
Beispiel:
./calculate.sh 1 + 2 ==> output is 3.
Aber das Problem hier ist, wenn ich schreibe:
Ich habe versucht "\*"
wie folgt, aber es scheint, die Variable $ 2 kann nicht bekommen, was ich will.
Jeder kann mir helfen, was ist das Problem hier?
#!/bin/sh
if [ $# -ne 3 ]
then
echo "Please input a number , an operator + or - or * or /"
else
case "$2" in
"+") echo "Sum is `expr $1 + $3`";;
"-") echo "Substraction is `expr $1 - $3`";;
"*") echo "Product is `expr $1 \* $3`";;
"/") echo "Division is `expr $1/$3`";;
esac
fi
Es funktioniert sicherlich mit './calculate.sh 1 '*' 2 '. Bitte geben Sie Details über ** genau ** an, welches Fehlverhalten Sie beim Zitieren des Arguments sehen; Ansonsten ist dies CNR (kann nicht reproduziert werden). –
das sagte, 'expr' ist uralt - das moderne POSIX sh Weg, Mathe zu tun ist' $ (($ 1 * $ 3)) ', die viel effizienter ist (beinhaltet nicht Abzweigung einer Subshell). –
(als eine andere Seite - verwenden Sie keine '.sh' Erweiterung für ein ausführbares Skript; ausführbare Skripte definieren Befehle und Befehle haben keine Erweiterungen - Sie führen' ls', nicht 'ls.elf'. Erweiterungen eignen sich für Shell-Bibliotheken, die als Quelle dienen sollen, nicht für Skripte, die ausgeführt werden sollen, siehe auch https://www.talisman.org/~erlkonig/documents/commandname-extensions-consided-harmful/). –