tengo una variable x=7
y quiero hacer eco de lo más uno, como echo ($x+1)
pero yo estoy haciendo:¿Cómo echo una suma de una variable y un número?
bash: error de sintaxis cerca inesperada símbolo `$ x + 1'
¿Cómo puedo hacer eso?
tengo una variable x=7
y quiero hacer eco de lo más uno, como echo ($x+1)
pero yo estoy haciendo:¿Cómo echo una suma de una variable y un número?
bash: error de sintaxis cerca inesperada símbolo `$ x + 1'
¿Cómo puedo hacer eso?
No hay necesidad de expr
, shell POSIX permite $(())
para la evaluación de la aritmética:
echo $((x+1))
Ver §2.6.4
tratar echo $ (($ x + 1))
creo que sólo funciona en alguna versión de bash que es 3 o más ..
echo `expr $x + 1`
sería otra solución
sólo tiene que utilizar el comando expr
:
$ expr $x + 1
8
Utilizamos expr
para ello:
echo `expr $x + 1`
Trate de esta manera:
echo $(($X + 1))
Trate doble paréntesis:
$ x=7; echo $(($x + 1))
8
$ echo $(($x+1))
8
De man bash
:
expansión aritmética
expansión aritmética permite la evaluación de una expresión aritmética y la sustitución del resultado. El formato para la expansión aritmética es:
$((expression))
La expresión es tratado como si fuera dentro de dobles comillas, pero comillas dobles dentro de los paréntesis no es especialmente tratado. Todos los tokens en la expresión se someten a la expansión del parámetro , expansión de cadena, sustitución de comando, y eliminación de comillas. Las sustituciones aritméticas pueden estar anidadas.
La evaluación se realizó de acuerdo con las normas enumeradas a continuación bajo ARITHMETIC evaluación. Si la expresión es no válida, bash imprime un mensaje que indica la falla y no se produce la sustitución .
No hay necesidad de prefijar vars con un '$' dentro '(())' – SiegeX
También puede utilizar la utilidad de bc
:
$ x=3;
$ echo "$x+5.5" | bc
8.5
+1 para bc !!!!! –
Como se ha mencionado en mi respuesta, '$ (())' es en realidad compatible con POSIX, no un bash'ism. – SiegeX