#!/bin/bash
if [ $2 == "+" ]; then
echo $1 + $3 | bc
elif [ $2 == "-" ]; then
echo $1 -$3 | bc
elif [ $2 == "/" ]; then
echo $1/$3 | bc -l
elif [ ${2: -0} == "\*" ]; then
echo $1 \* $3 | bc
fi
[[email protected] Desktop]$ ./q1.sh 5 \* 2
./q1.sh: line 4: [: too many arguments
./q1.sh: line 6: [: too many arguments
./q1.sh: line 8: [: too many arguments
./q1.sh: line 10: [: too many arguments
Antwort
Below Skript tun würde:
#!/bin/bash
if [ "$2" = "+" ] # == won't work with old test ie [],
#use [[ ]] if you wish to use ==
then
echo "$1 + $3" | bc
elif [ "$2" = "-" ]; then
echo "$1 - $3" | bc
elif [ "$2" = "/" ]; then
if [ "$3" -ne 0 ]
then
echo "scale=3;$1/$3" | bc -l # scale gives the precision of the results
else
echo "Division by zero not possible"
fi
elif [ "$2" = '*' ]; then
# You need to escape or quote the asterisk in the command line
# when calling the script like ./script 3 \* 4
echo "$1 * $3" | bc
fi 2>/dev/null # For suppressing the errors when using '\*' as $2
Sample Run
$ ./38464438.sh 4 + 5
9
$ ./38464438.sh 4 - 5
-1
$ ./38464438.sh 4/5
.800
$ ./38464438.sh 4 \* 5
20
Zum Downvoter habe ich vergessen, einige Variablen zu zitieren, die ich korrigiert habe. Ist das der einzige Grund für einen Downvote? – sjsam
immer Zitat Ihre Erweiterungen Parameter, wenn Sie einen sehr guten Grund, nicht zu. Wenn $2
*
ist (wie in Ihrem Beispiel), erfährt es eine Pfadnamenerweiterung. *
wird auf jede Datei im aktuellen Arbeitsverzeichnis erweitert, wodurch viel zu viele Argumente für den Befehl erzeugt werden.
if [ "$2" = "+" ]; then
(Verwenden Sie auch nicht ==
mit [
, verwenden Sie den richtigen Gleichheitsoperator =
.)
Bonus Tipp: Das Skript erhält *
als Argument, nicht \*
, so Ihre endgültige Vergleich sollte
elif [ "$2" = "*" ]; then
#!/bin/bash
bc <<< "[email protected]"
Beispiele
:
q1 5 \* 2
q1 'scale=5; sqrt(9^2 + 10^2 + 33^2)'
Ausgang:
10
35.63705
- 1. Calc von max oder max von calc in CSS
- 2. OpenOffice Calc Funktion zurück #WERT
- 3. Nested calc operations
- 4. Libreoffice Calc Datetime Abkürzung
- 5. calc() 100% + #px
- 6. CSS calc() funktioniert nicht
- 7. libreoffice calc arithmetische Zahlenformatierung?
- 8. CSS calc mit inherit
- 9. Mit n innerhalb calc
- 10. Internet Explorer CSS Breite: calc()
- 11. WENIGER mixin für „Calc“ Werte
- 12. Mortgage Calc Ausgaben -e Wert
- 13. calc() funktioniert nicht in Medienabfragen
- 14. Verwenden von calc() mit Tabellen
- 15. jQuery animieren() und CSS calc()
- 16. Hinzufügen zu CSS calc auf Bildlauf
- 17. Libreoffice Calc Count If inkonsistentes Verhalten
- 18. Wie benutze ich LibreOffice Calc und Python?
- 19. Calc Bestellsumme wo Orderline Produkt enthält
- 20. CSS calc() für inverse Breite funktioniert nicht
- 21. , wie man calc Bereiche in Oracle
- 22. Java: Calc x in sin (x)
- 23. css/Weniger calc() Methode stürzt mein IE10
- 24. CSS calc() Verhalten in CSS Variablen
- 25. calc() funktioniert nicht richtig mit komplexen Berechnungen
- 26. CSS calc() ist es weit verbreitet?
- 27. Libreoffice/Openoffice Calc - String an Zellen anhängen
- 28. in CSS Kombinieren calc() mit attr()
- 29. Verwenden der CSS-Eigenschaft calc() mit JS
- 30. Verwendung von Auto in CSS calc
Nur ein Gedanke .. Platz eine Verknüpfung für den Test Befehl Klammern - also einige Sonderzeichen innerhalb einer Variable selbst kann die Zeichenfolge in „multiple brechen Argumente "... – Zak
Bitte lesen Sie http://stackoverflow.com/help/how-to-ask. Es wird Ihnen helfen, Ihre Frage so zu formulieren, dass wir Ihnen helfen können. – jbrown