2012-05-23 15 views
5

He estado trabajando con algunos scripts de bash últimamente y he estado buscando en las páginas man. Por lo que he reunido, ¿$(()) significa expr y [ ] significa test?

Para $(()):

echo $((5 + 3)) 

tiene el mismo resultado que:

echo $(expr 5 + 3) 

Para [ ]:

test 'str' = 'str' 

tiene el mismo valor éxito como:

[ 'str' = 'str' ] 

¿Entendí bien?

+2

También podría considerar [[]], que le permite hacer la coincidencia de patrones (entre otras cosas). Single [] es la sintaxis del shell Bourne. – cdarke

+0

¡Gracias por el aviso! ¡Lo he resuelto con toda la ayuda que todos ustedes han brindado! ¡Aclamaciones! – Vern

+0

'$ (())' no es un bashismo, es una sintaxis compatible con los estándares nativos de POSIX. 'expr' es una antigüedad de la década de 1970. –

Respuesta

9

el constructo ((...)) es equivalente al bash builtin let. let hace casi lo mismo que expr.

construcción $((...)), tenga en cuenta que $ al principio, sustituirá la salida de la expresión dentro como $(...) hace.

la construcción [...] es de hecho solo otro nombre para test.

consulte las páginas de ayuda de bash para obtener más información.

  • help "("
  • help let
  • help [
  • help test

ver también:

+0

¡Muchas gracias! ¡Y para los enlaces también! Fueron realmente útiles :) – Vern

6

estás en lo correcto acerca [ ] y test

Sobre $(()), este es un reemplazo más elaborada de expr. Puede calcular expresiones más complejas que con expr.

Cuestiones relacionadas