6 votos

"comando no encontrado" cuando se utiliza la expansión aritmética en shell bash

Usando el escritorio de Ubuntu, tengo Abrir terminal y estoy utilizando el shell bash. Una de las extensiones de shell de bash es la expansión aritmética, con la siguiente sintaxis:

$(( EXPRESSION ))
or 
$[ EXPRESSION ]

Cuando hago aritmética, devolverá el valor correcto pero siempre va seguida de "command not found":

$ $((1+2))
3: command not found
$ $[1+2]
3: command not found
$ $[2+2]
4: command not found
$ $((2*6))
12: command not found

Mi pregunta es ¿por qué lo hace Mostrar "command not found" y ¿cómo puedo arreglar eso?

4voto

Avinash Raj Puntos 29074

Usted tiene que agregar echo comando antes de que todos sus comandos,

$ echo $[1+2]
3

Usted no tiene que poner directamente $[1+2] en la terminal, porque bash calcula $[1+2] y analiza de nuevo el mismo, por lo que el comando no se encuentra el error se produce.

Por Ejemplo

$ var="sudo apt-get update"
$ $var

Ign http://archive.canonical.com saucy InRelease                               
Ign http://ppa.launchpad.net saucy InRelease                                   
Ign http://ubuntu.inode.at saucy InRelease                          
Ign http://extras.ubuntu.com saucy InRelease                        
29% [Waiting for headers] [Waiting for headers] [Waiting for headers]

En el ejemplo de arriba, sudo apt-get update comando fue asignado a una variable var.En ejecución $var, primera bash expande y otra vez analiza la ampliación de uno.

4voto

John1024 Puntos 3801
$ $((1+2))
3: command not found

bash$((1+2))3. bash3 Ejecute. No encuentra it Por lo tanto el error de. echo para evitar esto.

$ echo  $((1+2))
3

3voto

clement Puntos 341

Porque bash está tratando de ejecutar la salida de su expansión y no encuentra ninguna command con nombre 3 en la PATH . Para solo probar, utilizar echo o asignar a una variable y utilizar más adelante.

echo $((1+2))
3
test=$((1+2))
echo $test
3

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X