En mi mac, bash -D
no genera ningún resultado
bash -D
(y su opción larga equivalente --dump-strings
) lee comandos de la entrada estándar o de un archivo y extrae cadenas marcado como traducible es decir, cadenas entre comillas dobles precedidas de un signo de dólar, como por ejemplo $"Hello, world"
.
Si bash -D
se ejecuta sin ninguna entrada, como usted hizo, no muestra nada e inicia un nuevo intérprete de comandos (a especial shell, véase más abajo).
Por ejemplo, para este sencillo script /tmp/script
:
#!/bin/bash
echo $"Hello, world"
bash -D
salidas:
"Hello, world"
Como ves, esto equivale a buscar líneas que coincidan con $"<text>"
y quitando el signo del dólar.
Más interesante es la salida de la opción similar --dump-po-strings
que es, como dice la página man 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 ""
Este excelente artículo Cómo añadir soporte de localización a tus bash scripts. encontrará más información sobre cómo utilizar esta opción.
bash -D
me deja en un nuevo shell que parece tener menos funcionalidad que el shell original
Así es, el nuevo shell no reacciona a ningún comando. La razón de esto es que el -D
implica -n
que dirige el proyectil para leer comandos pero no ejecutarlos .
En -n
merece una explicación: aunque es una opción aparentemente inútil a primera vista, en realidad es bastante útil. bash -n
no sólo 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 comprobar un script en busca de errores de sintaxis sin ejecutar ningún comando.
Esto significa que después de ejecutar bash -D
el intérprete de comandos que obtendrá aceptará sus comandos, comprobará la validez de la sintaxis (y mostrará un error si es necesario) y no hará nada. Por eso which
"no funciona".
Véase Invocación de Bash y El Set Builtin del Manual de referencia de Bash para obtener más información sobre este comportamiento.