Hasta ahora tus scripts ejecutan todos los comandos siempre, en orden. Pero en el mundo real necesitas que tu script decida qué hacer según las circunstancias. Para eso existen los condicionales.
La estructura de un if en shell es:
El fi (if al revés) cierra el bloque. Los espacios dentro de los corchetes [ ] son obligatorios — sin ellos da error.
Para hacer algo diferente cuando la condición no se cumple:
Para más de dos caminos:
Recuerda que en nuestro editor el primer argumento es
$2(no$1). En una terminal real de Linux sería$1.
= — son iguales!= — son diferentes-z "$VAR" — la variable está vacía-n "$VAR" — la variable no está vacíaSiempre pon las variables entre comillas dobles: "$1" en vez de $1. Si la variable está vacía y no usas comillas, el comando se rompe.
Para comparar números, no uses = ni <. Usa estos operadores:
-eq — igual (equal)-ne — no igual (not equal)-lt — menor que (less than)-gt — mayor que (greater than)-le — menor o igual-ge — mayor o igualPuedes preguntar si un archivo o directorio existe:
-f archivo — existe y es un archivo-d directorio — existe y es un directorioTodo comando devuelve un número al terminar:
0 significa éxitoPuedes ver el código del último comando con $?:
Esto muestra 0 porque ls funcionó bien. El if usa exactamente este mecanismo — evalúa si el comando dentro de [ ] devuelve 0 o no.
Crea un script check.sh que:
$2 está vacío, recuerda que en nuestro editor el primer argumento es $2)Uso: sh check.sh nombreEjecuta sh check.sh (sin argumento) para que muestre el mensaje de ayuda.