2011-12-18 16 views

Respuesta

9

Obtiene el mismo efecto.

Se recomienda $() ya que es más legible y hace que sea más fácil anidar un $() en otro $().

Actualización:

La sintaxis $() es un estándar POSIX 1003.1 (edición de 2004). Sin embargo, en algunos sistemas UNIX anteriores (SunOS, HP-UX, etc.) el /bin/sh no lo comprende.

Es posible que necesite utilizar el signo "` "en su lugar o usar otro shell (generalmente es ksh) si necesita que su script funcione en dicho entorno.

Si no sabe qué sintaxis usar, utilice $(). La sintaxis de Backtick está en desuso.

+0

@samus: $() es de hecho POSIX (1003.2 creo), pero no funcionará en los antiguos UNIXes. Confía en mí, los uso todos los días. –

+0

pero ese es el punto, cuando hablamos de portabilidad nos referimos a POSIX porque es el estándar actual admitido por la mayoría de las plataformas, si usted tiene requisitos específicos que van más allá de esto, entonces se trata de un caso particular. –

+0

@samus: con "más portátil" me refiero a "funciona en más SO" y "no es compatible con el estándar POSIX más nuevo". –

3

Hay otra forma de inicializar una variable por defecto si no la ha inicializado usted mismo.

[jaypal:~/Temp] a="I have initialized var a" 
[jaypal:~/Temp] echo ${a:="Default value"} 
I have initialized var a 
[jaypal:~/Temp] a= 
[jaypal:~/Temp] echo ${a:="Default value"} 
Default value 
+0

Para que el operador lea el nuevo valor de la variable y emite el valor anterior. :) –

+2

Se usa generalmente cuando pasa valores a su secuencia de comandos como '$ 1',' $ 2' y ayuda a ejecutar el script incluso cuando esos valores no se pasan explícitamente. Con esto, puede establecer implícitamente sus variables para que se ejecuten en valores predeterminados si no se les ha asignado un valor. Esto ahorra de 4 a 5 líneas de código donde se verifica si la variable se ha asignado o no, algo así como 'if [-z" $ var "] then; ... ' –

+0

Creo, podemos usar, echo $ {a: =" Valor predeterminado "} o echo $ {a: -" Valor predeterminado "} – Indrajeet

Cuestiones relacionadas