Pregunta 1¿Cuándo se ejecuta cmd2 en cmd1 && cmd2?
Encadenar comandos — ; && || y comillas
Aprende la ejecución secuencial con ;, la ejecución condicional con && (en caso de éxito) y || (en caso de fallo), y cómo difieren las comillas simples y dobles en la expansión de variables — todo práctico en una terminal del navegador.
Encadenar comandos — ; && ||
Puedes encadenar varios comandos en una sola línea.
; los ejecuta en orden sin importar el resultado del comando anterior.
&& ejecuta el siguiente comando solo cuando el anterior tuvo éxito, y || ejecuta el siguiente solo cuando el anterior falló.
| Símbolo | Ejecuta el siguiente cuando | Ejemplo |
|---|---|---|
; | Siempre, sin importar el resultado | echo a ; echo b |
&& | Solo si el anterior tuvo éxito (estado de salida 0) | mkdir d && cd d |
|| | Solo si el anterior falló (distinto de cero) | cat f || echo ng |
; siempre se ejecuta en secuencia, && ejecuta el siguiente en caso de éxito y || lo ejecuta en caso de fallo.echo step1 ; echo step2 # ejecutar ambos en orden
mkdir build && echo created # created si tiene éxito
ls missing.txt || echo not-found # not-found si falla
Combinar && y || — ramificar en línea
Puedes escribir && y || uno tras otro en una línea.
cmd && echo ok || echo ng ejecuta echo ok si cmd tiene éxito, y echo ng si falla.
Es la forma habitual cuando quieres escribir en un solo lugar tanto la acción de éxito como la de fallo.
cmd && echo ok || echo ng imprime ok si cmd tiene éxito, o ng si falla.mkdir out && echo created || echo failed # created en caso de éxito
ls nofile.txt && echo found || echo none # none en caso de fallo
En qué se diferencian las comillas — ' y "
Hay dos tipos de comillas para envolver una cadena.
Las comillas simples '...' tratan el contenido como caracteres literales y no reemplazan $VAR.
Las comillas dobles "..." expanden $VAR y $(...) dentro a sus valores.
También se usan para pasar como una sola unidad una cadena que contiene espacios.
| Comillas | $VAR | $(...) | Ejemplo → salida |
|---|---|---|---|
'...' (simples) | No se expande (literal) | No se expande | echo '$name' → $name |
"..." (dobles) | Se expande al valor | Se expande a la salida del comando | echo "$name" → Linux |
$variable a su valor.place=server
echo 'path is $place' # literal: path is $place
echo "path is $place" # expandido: path is server
Incrustar variables y salida de comandos en comillas dobles
Dentro de comillas dobles puedes construir una sola cadena a partir de variables y sustitución de comandos a la vez.
$(...) se reemplaza por la salida del comando.
Por ejemplo, $(pwd) se reemplaza por la ruta de tu ubicación actual antes de mostrarse.
Envolver en comillas dobles es también la forma básica de pasar como un único argumento un valor que contiene espacios.
Qué son realmente el éxito y el fallo — estado de salida y echo $?
El 'éxito o fallo' que vigilan && y || lo determina un número llamado estado de salida que un comando deja al terminar.
0 significa éxito y cualquier cosa distinta de 0 significa fallo.
El estado de salida del comando anterior va a la variable especial $?, que puedes consultar con echo $?.
| Estado de salida | Significado | Comprobación |
|---|---|---|
0 | El comando anterior tuvo éxito | echo $? muestra 0 |
| distinto de cero | El comando anterior falló | echo $? muestra 1, etc. |
echo $? es 0; justo tras uno que falla, es distinto de cero.ls . # un comando que tiene éxito
echo $? # estado de salida anterior -> 0
cat nofile.txt # un comando que falla
echo $? # estado de salida anterior -> distinto de cero (p. ej. 1)
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Qué imprime echo '$name'? (suponiendo que name=Linux está fijado)
Pregunta 3¿Cuál es correcto sobre el papel de ||?