Foros del Web » Administración de Sistemas » Unix / Linux »

[SOLUCIONADO] error sintáctico: operador aritmético inválido en Bash

Estas en el tema de error sintáctico: operador aritmético inválido en Bash en el foro de Unix / Linux en Foros del Web. Hola buenas noches a todos. Tengo el siguiente error al ejecutar un script: " error sintáctico: operador aritmético inválido " El código es: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 01/02/2014, 20:36
Avatar de ARICARRARO  
Fecha de Ingreso: diciembre-2010
Ubicación: México
Mensajes: 227
Antigüedad: 13 años, 3 meses
Puntos: 10
Pregunta error sintáctico: operador aritmético inválido en Bash

Hola buenas noches a todos. Tengo el siguiente error al ejecutar un script: "error sintáctico: operador aritmético inválido"

El código es:

Código BASH:
Ver original
  1. #!/bin/bash
  2. read -p "Introduce primer numero: " N1
  3. read -p "Introduce segundo numero: " N2
  4. PRODUCTO=$((${N1}*${N2}))
  5. echo -n "producto: $PRODUCTO"

He intentado ejecutarlo de esta forma: sh Script.sh y/o ./Script.sh

Cambié la operación por esto:
Código Apache:
Ver original
  1. PRODUCTO=`expr $N1 * $N2`

¿Hay alguna forma de que funcione el script?

Gracias.
  #2 (permalink)  
Antiguo 02/02/2014, 10:52
Avatar de ARICARRARO  
Fecha de Ingreso: diciembre-2010
Ubicación: México
Mensajes: 227
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: error sintáctico: operador aritmético inválido en Bash

¡Solucionado!

Hallé una forma:
Código BASH:
Ver original
  1. echo "Introduce un numero: "
  2. read N1
  3. echo "Introduce otro numero:"
  4. read N2
  5. PRODUCTO=`echo "$N! * $N2" | bc -l`
  6. echo "producto: $PRODUCTO"

Si a alguien más le sirve.
  #3 (permalink)  
Antiguo 04/02/2014, 19:51
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: error sintáctico: operador aritmético inválido en Bash

ARICARRARO,
Tu código original es perfectamente correcto, si acaso vale la nota extra de que en contexto de (( )) o $(( )), las variables no necesitan el $ al principio. Para ver si tu script es correcto, basta cn ejecutarlo con "bash -n miscript.sh".

El problema por el que no te funciona el script original es que lo estás llamando vía "sh", lo cual NO es lo mismo que bash. SH es la "Bourne Shell", mientras que BASH es "Bourne Again Shell". SH es una shell antigua que no entiende la construcción $(( )), pero se mantiene porque si un script corre correctamente en SH, se puede garantizar con un alto nivel de confianza que correrá en cualquier sistema tipo UNIX.

Cuando llamas directamente a SH en un sistema Linux moderno, estás ejecutando BASH, pero BASH entra en modo compatibilidad con POSIX, lo cual basicamente quiere decir que se transforma en la SH básica.
  #4 (permalink)  
Antiguo 06/02/2014, 11:24
Avatar de ARICARRARO  
Fecha de Ingreso: diciembre-2010
Ubicación: México
Mensajes: 227
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: error sintáctico: operador aritmético inválido en Bash

Gracias @AlvaroG

Etiquetas: bash, linux, operaciones, scripts
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:47.