Qu'est-ce que la sortie echo $-1
, echo $-2
, echo $-3
.. signifie?
Sur une de mes box Linux, cela me montre:
echo $-1
imsBEl1
echo $-2
imsBEl2
Et sur une autre box Linux, cela montre:
echo $-1
himBH1
echo $-2
himBH2
Correspondent-ils à certains emplacements de mémoire ou à autre chose?
Réponses:
POSIX a défini $ - comme:
Cela
$-
peut donc être différent en fonction de votre shell ou de la façon dont vous l'invoquez.1
ou2
sont jetons séparés ici. Lorsque le shell voit unquote$
, il identifiera le début de tout candidat pour l'expansion de paramètres, la substitution de commandes ou l'expansion arithmétique. Il l'a vu$-
et élargi, laissant le reste inchangé.Vous pouvez voir la section Reconnaissance des jetons pour plus de détails.
la source
echo $-
affiche les options du shell courant (sans-
préfixe).1
et2
sont des jetons supplémentaires non liés.la source
Pour compléter la réponse de Miroslav:
Cela signifie que ce sont les options, pour chaque machine respectivement.
J'ai recherché la signification de chaque drapeau et compilé les significations ci-dessous, avec des paraphrases mineures.
la source
Pour développer les réponses existantes, essayez
echo "${-1}"
etecho "${-2}"
- vous obtiendrez une erreur "Mauvaise substitution" car plutôt que d'utiliser-1
comme nom de variable le trait d'union est utilisé pour remplacer une valeur si le nom de la variable avant n'est pas défini. Par exemple:la source