输入非整数时遇到语法错误,如3.4,2.1,3.9等。
有人可以指点我为什么吗?
提前致谢
#!/bin/bash
while echo "Informar valores"
do
valorbase=$(echo "8" | bc)
valor1=0
valor2=0
valor3=0
echo "Digite um valor abaixo"
read valor1
valordasoma=$(echo "scale=3; $valor1+$valor2" | bc)
echo "Digite um valor abaixo"
read valor2
valordasoma=$(echo "scale=3; $valor1+$valor2" | bc)
echo "Digite um valor abaixo"
read valor3
valordasoma=$(echo "scale=3; $valor1+$valor2+$valor3" | bc)
echo $valordasoma
if [[ $valordasoma -ge $valorbase ]]; then
echo "Valor da soma > que, ou = ao valor base"
echo "Repete comando para a linha"
elif [[ $valordasoma -lt $valorbase ]]; then
echo "Continua exibindo os campos valor ate que a soma seja igual ao valor base"
else
echo "continua o script para o restante das linhas"
fi
done
答案 0 :(得分:1)
shell不进行浮点运算(-ge
仅支持)积分,所以
if [[ $valordasoma -ge $valorbase ]]; then
无法运作。您需要找到一种使用其他方法执行浮点比较的方法。这是asked before here.
答案 1 :(得分:0)
你可以在使用浮点数时使用awk / perl等,因为shell不支持它。
您可以按如下方式重写脚本。注意使用awk进行浮点比较。
#!/bin/bash
while echo "Informar valores"
do
valorbase=$(echo "8" | bc)
valor1=0
valor2=0
valor3=0
echo "Digite um valor abaixo"
read valor1
valordasoma=$(echo "scale=3; $valor1+$valor2" | bc)
echo "Digite um valor abaixo"
read valor2
valordasoma=$(echo "scale=3; $valor1+$valor2" | bc)
echo "Digite um valor abaixo"
read valor3
valordasoma=$(echo "scale=3; $valor1+$valor2+$valor3" | bc)
echo $valordasoma
var=$(awk -v o1=$valordasoma -v t1=$valorbase 'BEGIN { print (o1 >= t1)?"1":"0" }')
if [ "$var" -eq 1 ]; then
echo "Valor da soma > que, ou = ao valor base"
echo "Repete comando para a linha"
elif [ "$var" -eq 0 ]; then
echo "Continua exibindo os campos valor ate que a soma seja igual ao valor base"
else
echo "continua o script para o restante das linhas"
fi
done