Dans ce cas précis, notez que bash a une variable nommée PWD
qui contient le répertoire courant: $PWD
est équivalent à `pwd`
. (D'autres coquilles, c'est une caractéristique standard.) Vous pouvez écrire votre script comme ceci:
#!/bin/bash
until [ "$PWD" = "/" ]; do
echo "$PWD"
ls && cd .. && ls
done
Notez l'utilisation de guillemets autour de la variable de référence. Ils sont nécessaires si la variable (ici, le répertoire courant) contient des espaces ou des caractères génériques (\[?*
), parce que la coquille se fend le résultat d'extensions de variable dans les mots et les exécute d'expansion sur ces mots. Toujours le double-quote extensions de variable "$foo"
de commande et de substitutions "$(foo)"
(sauf si vous savez que vous n'avez pas d').
Dans le cas général, comme d'autres réponses ont déjà mentionné:
- Vous ne pouvez pas utiliser les espaces autour du signe égal dans une affectation:
var=value
, pas var = value
- L'
$
signifie "prendre la valeur de cette variable", afin de ne pas l'utiliser lors de l'affectation: var=value
, pas $var=value
.