En este caso específico, cabe destacar que fiesta tiene una variable llamada PWD
que contiene el directorio actual: $PWD
es equivalente a `pwd`
. (Lo mismo ocurre con otros proyectiles, este es un standard feature.) Para que pueda escribir el script de la siguiente manera:
#!/bin/bash
until [ "$PWD" = "/" ]; do
echo "$PWD"
ls && cd .. && ls
done
Nota el uso de comillas dobles alrededor de las referencias a variables. Son necesarios si la variable (aquí, el directorio actual) contiene espacios en blanco o comodines (\[?*
), porque el shell divide el resultado de expansiones de variable en palabras y realiza englobamiento en estas palabras. Siempre expansiones variables de comillas dobles "$foo"
y sustituciones de comandos "$(foo)"
(a menos que sepa específicamente que no tiene que hacerlo).
En el caso general, como otras respuestas han mencionado ya:
- No se puede utilizar el espacio en blanco alrededor del signo igual en una misión:
var=value
, no
var = value
- El
$
significa “tomar el valor de esta variable ", por lo que no la utiliza al asignar: var=value
, no
$var=value
.
También podría agregar una escotilla de escape a sus bucles en caso de que algo salga mal. p.ej. 'i = 0' fuera del ciclo. luego dentro, 'i = $ i + 1'. Y luego también dentro del ciclo, agregue algo como 'if [$ i> 25] then; descanso; endif; 'No estoy seguro de la ruptura del bucle en la sintaxis en los scripts de shell, pero debería ser algo así. –