Pregunta

Cygwin usuario aquí (aunque si hay una solución adecuada llevaré a K/Ubuntu, que también voy a usar).

Tengo un mensaje de Bienvenida en mi .bashrc que tiene el siguiente aspecto:

SAD=(`date +%A-%B-%d-%Y`)
DUB=(`date -u +%k:%M`)
printf "Today's Date is: ${SAD}.\n"
printf "Dublin time is now ${DUB}. (24-Hour Clock)\n"

Después de numerosos intentos de uso de espacios en blanco en la variable TRISTE por encima, me dio y se usan guiones.Pero yo soy, comprensiblemente, no satisfecho con esta banda la ayuda de la solución.El problema, según recuerdo, era que cada vez que he intentado utilizar citado espacio, \s o alguna similar escapar de la etiqueta, junto con las variables enumeradas en la sección correspondiente de la GNU manual para fecha, la variable de Año se ignora o se devuelve un error.Lo que yo hago no quiero tener que hacer es recurrir a la cadena completa como devuelto por fecha, pero en lugar de mantener el orden en el que tengo cosas en el código anterior.

Mientras escribo esto, se me ocurre que la configuración de la IFS alrededor de este código para el mensaje de Bienvenida puede funcionar, siempre puedo volver a los valores predeterminados después (la de arriba aparece en las líneas 13 a 17 de 68 línea .bashrc).Sin embargo, no puedo recordar cómo hacerlo, ni estoy seguro de que funcionaría.

Generalmente hablando, .bashrc archivos están en la válida de la sintaxis de BASH, ¿no?La mía sin duda se asemejan a los guiones que he escrito yo, o probado de otras fuentes.Todos los que me falta, supongo, es el código para la configuración y la desconexión de los separadores de campo en torno a este bloque de mensaje.

Sin duda, cualquier persona que viene con una solución estará haciendo un favor y no sólo a mí, sino a cualquier otro pariente de los novatos en la Red de tomar su primer (o xiii a través de la xvii) pasos en el mundo de la programación en shell script.

BZT

¿Fue útil?

Solución

Poner

SAD=$(date "+%A %B %d %Y")
DUB=$(date -u +%k:%M)
echo "Today's Date is: ${SAD}."
echo "Dublin time is now ${DUB}. (24-Hour Clock)"

en mis impresiones .bash_profile

Today's Date is: Thursday February 18 2010.
Dublin time is now 12:55. (24-Hour Clock)

Creo que eso es lo que desea.

Otros consejos

el problema es su declaración de matriz.

SAD=(date +%A-%B-%d-%Y) sólo significa que usted está poniendo la cadena "fecha" como el elemento 0, y "+% de A% B% d-% Y" como elemento 1. ver por sí mismo

$ SAD=(date +%A-%B-%d-%Y)  #<-- this is an array declaration
$ echo ${SAD[0]}
date
$ echo ${SAD[1]}
+%A-%B-%d-%Y

si desea que el valor de la "fecha" comando para estar en una variable, utilice $(..), por ejemplo

$ SAD=$(date +%A-%B-%d-%Y)
$ echo ${SAD}
Thursday-February-18-2010

Para obtener espacios, es necesario citar el argumento a date de manera que se trata de una sola cadena. También está declarando erróneamente SAD y DUB como matrices, cuando lo que realmente pretende hacer era evaluar ellos. Prueba esto:

[/tmp]> $(date "+%A %B %d, %Y")
Thursday February 18, 2010

date +%A\ %B\ %d\ %Y

He encontrado la combinación que funciona:
SAD=$(date "+%A %B %d %Y")
echo $SAD
Jueves 18 De Febrero De 2010

Otro ejemplo, cuando:

  1. Vale la pena hacer una pregunta
  2. Ayuda a saber dónde poner su comillas dobles.
    fecha obviamente no sabe de citado espacio, pero Bash, así que
    es una cuestión de "susurrar en el oído derecho."

Gracias ghostdog74.

BZT

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top