Pregunta:
Acabo de ver esto en un script de inicio:
echo $"Stopping Apache"
¿Para qué es ese signo de dólar?
Mi investigación hasta ahora:
Encontré esto en el manual de bash:
extquote
Si se establece,
$'string'
y$"string"
comillas se realizan dentro de las expansiones${parameter}
encerradas entre comillas dobles. Esta opción está activada de forma predeterminada.
… pero no encuentro ninguna diferencia entre cadenas con y sin el prefijo $
:
$ echo "I am in $PWD"
I am in /var/shared/home/southworth/qed
$ echo $"I am in $PWD"
I am in /var/shared/home/southworth/qed
$ echo $"I am in ${PWD}"
I am in /var/shared/home/southworth/qed
$ echo "I am in ${PWD}"
I am in /var/shared/home/southworth/qed
$ echo 'I am in ${PWD}'
I am in ${PWD}
$ echo $'I am in ${PWD}'
I am in ${PWD}
$ echo $'I am in $PWD'
I am in $PWD
Respuesta:
Aquí están sucediendo dos cosas diferentes, ambas documentadas en el manual de bash
PS
La comilla simple con signo de dólar es una forma especial de cotización:
Las palabras de la forma $ 'cadena' se tratan especialmente. La palabra se expande a una cadena, con los caracteres de escape con barra invertida reemplazados según lo especificado por el estándar ANSI C.
PS
La comilla doble del signo de dólar es para la localización:
Una cadena entre comillas dobles precedida por un signo de dólar ('$') hará que la cadena se traduzca de acuerdo con la configuración regional actual. Si la configuración regional actual es C o POSIX, se ignora el signo de dólar. Si la cadena se traduce y se reemplaza, el reemplazo se cotiza dos veces.