¿Cuál es la diferencia entre la asignación a una variable como var=foo y el uso de que como el let var=foo? O casos como el de var=${var}bar y let var+=bar? ¿Cuáles son las ventajas y desventajas de cada enfoque?

InformationsquelleAutor IDDQD | 2013-09-09

1 Comentario

  1. 64

    let hace exactamente lo (( )) hacer, es para las expresiones aritméticas. Hay casi no hay diferencia entre let y (( )).

    Tus ejemplos no son válidos. var=${var}bar se va a agregar la palabra bar a la var variable (que es una cadena de operación), let var+=bar no va a funcionar, porque no es una expresión aritmética:

    $ var='5'; let var+=bar; echo "$var"
    5

    En realidad, ES una expresión aritmética, si la única variable bar fue creado, de lo contrario bar se trata como cero.

    $ var='5'; bar=2; let var+=bar; echo "$var"
    7
    • Una diferencia es que let permite cierto grado de direccionamiento indirecto: a=b; b=3; let $a+=1; echo $b;. El argumento para let se somete a la expansión de parámetros antes de ser evaluado (que no creo que me vio mencionado en el enlace que has publicado).
    • En realidad, el principio de que. Pensé que después de a=b; b=3, los dos comandos (( a+=1 )) y (( $a+=1 )) sería equivalente, pero no lo son. La primera parece reemplazar a con el valor de b, luego se incrementa, dejando el valor de b virgen. El segundo incrementa b dejando a conjunto de la cadena de b.

Dejar respuesta

Please enter your comment!
Please enter your name here