Sur mon Mac, bash -D
ne génère aucune sortie
bash -D
(et son option longue équivalente --dump-strings
) lit les commandes à partir de l'entrée standard ou d'un fichier et extrait les chaînes de caractères marquées comme traduisibles c'est-à-dire les chaînes de caractères entre guillemets qui sont précédées d'un signe de dollar, comme $"Hello, world"
.
Si bash -D
est exécuté sans aucune entrée, comme vous l'avez fait, il ne produit rien et démarre un nouveau shell (a spécial (voir ci-dessous).
Par exemple, pour ce simple script /tmp/script
:
#!/bin/bash
echo $"Hello, world"
bash -D
des sorties :
"Hello, world"
Comme vous le voyez, cela équivaut à rechercher les lignes qui correspondent à $"<text>"
et en supprimant le symbole du dollar.
Le résultat de l'option similaire est plus intéressant --dump-po-strings
qui est, comme le dit la page de manuel de Bash, equivalent to -D, but the output is in the GNU gettext po (portable object) file format.
:
bash --dump-po-strings /tmp/script
#: /tmp/script:2
msgid "Hello, world"
msgstr ""
Cet excellent article Comment ajouter le support de la localisation à vos scripts ? fournit de plus amples informations sur l'utilisation de cette option.
bash -D
me jette dans un nouveau shell qui semble avoir moins de fonctionnalités que le shell d'origine
En effet, le nouveau shell ne réagit à aucune commande. La raison en est que les -D
L'option implique -n
qui dirige la coquille pour lire les commandes mais ne pas les exécuter .
En -n
mérite une explication : bien qu'elle semble inutile à première vue, cette option est en fait très utile. bash -n
ne se contente pas de lire les commandes, mais les valide et se plaint si la syntaxe n'est pas valide. bash -n <script name>
pour vérifier si un script contient des erreurs de syntaxe sans exécuter de commande.
Cela signifie qu'après avoir exécuté bash -D
l'interpréteur de commandes que vous obtiendrez acceptera volontiers vos commandes, vérifiera la validité de la syntaxe (et affichera une erreur si nécessaire) et ne fera rien. C'est pourquoi which
"ne fonctionne pas".
Voir Invoquer Bash y L'ensemble intégré du manuel de référence de Bash pour obtenir des informations de fond sur ce comportement.