En mi mac, bash -D
no genera resultados
bash -D
(y su opción larga equivalente --dump-strings
) lee comandos desde una entrada estándar o un archivo y extrae cadenas marcado como traducible , es decir, cadenas entre comillas dobles precedidas por un signo de dólar, como $"Hello, world"
.
Si bash -D
se ejecuta sin ninguna entrada, como lo hizo, no genera nada e inicia un nuevo shell (un special shell, vea más abajo).
Por ejemplo, para este simple script /tmp/script
:
#!/bin/bash
echo $"Hello, world"
bash -D
resultados:
"Hello, world"
Como puede ver, esto es equivalente a buscar líneas que coincidan con $"<text>"
y eliminar el signo de dólar.
Más interesante es el resultado de la opción similar --dump-po-strings
, que es, como la página de Bash man lo pone, 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 ""
Este excelente artículo Cómo agregar soporte de localización a tus scripts de bash proporciona más información sobre cómo usar esta opción.
bash -D
me envía a una nueva shell que parece tener menos funcionalidad que la shell original
Eso es correcto, el nuevo shell no reacciona a ningún comando. La razón de esto es que la opción -D
implica -n
, que dirige al shell a leer comandos pero no a ejecutarlos .
La opción -n
merece una explicación: aunque es una opción aparentemente inútil a primera vista, en realidad es bastante útil. bash -n
no solo lee los comandos, sino que también los valida y se queja si la sintaxis no es válida, por lo que puede ejecutar bash -n <script name>
para verificar si en un script hay errores de sintaxis sin ejecutar ningún comando.
Esto significa que después de ejecutar bash -D
, el shell que obtenga aceptará con gusto sus comandos, verificará la validez de sintaxis (y generará un error si es necesario) y no hará nada. Es por eso que which
"no funciona".
Consulte Invoking Bash y The Set Builtin del Manual de referencia de Bash para obtener información de fondo sobre este comportamiento.