systemadmin.es > Script > Substitución por comandos

Substitución por comandos

Típicamente se usan los acentos abiertos para ejecutar comandos y usar el resultado en otro contexto:

$ echo a `echo b`
a b

El problema es que de esta forma no podemos anidarlos:

$ echo a `echo b `echo c``
a becho c

Existe otra forma de usar la substitución por comandos para que podamos anidarlos, la cual suelo usar en mis scripts en lugar de los acentos abiertos:

# echo a $(echo b)
a b

De esta forma marcamos con $( el inicio del comando y con ) el final, pudiendo anidarlos con los niveles que queramos:

$ echo a $(echo b $(echo c))
a b c

2 comments to “Substitución por comandos”

  1. Aunque soy partidario de usar siempre $() en vez de “ (los acentos se consideran obsoletos) hay que decir que también es posible anidar comandos con acentos:

    echo a `echo b \`echo c \\\`echo d\\\`\“

    saludos.

  2. Yo tampoco suelo usar los acentos, pero no me había parado a probarlo escapandolo para anidarlo. Aun así, es un rollo, queda mas claro con $() y es mas cómodo

    Muchas gracias por el comentario!

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>