Estaciones de trabajo en línea OnWorks Linux y Windows

Logotipo

Alojamiento gratuito en línea para estaciones de trabajo

<Anterior | Contenido | Siguiente>

Asignar valores a variables y constantes

Aquí es donde nuestro conocimiento de la expansión realmente comienza a dar sus frutos. Como hemos visto, a las variables se les asignan valores de esta manera:

variable=propuesta de

donde variable es el nombre de la variable y propuesta de es una cuerda. A diferencia de otros lenguajes de programación, al shell no le importa el tipo de datos asignados a una variable; los trata a todos como cadenas. Puede forzar al shell a restringir la asignación a números enteros usando el declarar comando con el -i opción, pero, al igual que configurar las variables como de solo lectura, esto rara vez se hace.

Tenga en cuenta que en una asignación, no debe haber espacios entre el nombre de la variable, el signo igual y el valor. Entonces, ¿en qué puede consistir el valor? Cualquier cosa que podamos expandir en una cadena:


a = z

b = "una cadena"

c = "una cadena y $ b"


d = $ (ls -l foo.txt) e = $ ((5 * 7)) f = "\ t \ ta cadena \ n"

# Asigne la cadena "z" a la variable a.

# Los espacios incrustados deben estar entre comillas.

# Otras expansiones, como las variables, se pueden

# expandido en la tarea.

# Resultados de un comando.

# Expansión aritmética.

# Secuencias de escape como pestañas y nuevas líneas.

a = z

b = "una cadena"

c = "una cadena y $ b"


d = $ (ls -l foo.txt) e = $ ((5 * 7)) f = "\ t \ ta cadena \ n"


imagen

Se pueden realizar múltiples asignaciones de variables en una sola línea:



a = 5 b = "una cadena"

a = 5 b = "una cadena"


Durante la expansión, los nombres de las variables pueden estar rodeados por llaves opcionales “{}”. Esto es útil en los casos en que el nombre de una variable se vuelve ambiguo debido a su contexto circundante.


texto. Aquí, intentamos cambiar el nombre de un archivo de mi archivo a miarchivo1, usando una variable:



[yo @ linuxbox ~] $ filename = "myfile" [yo @ linuxbox ~] $ toque $ nombre de archivo [yo @ linuxbox ~] $ mv $ nombre de archivo $ nombre de archivo1

mv: falta el operando del archivo de destino después de `myfile 'Intente con` mv --help' para obtener más información.

[yo @ linuxbox ~] $ filename = "myfile" [yo @ linuxbox ~] $ toque $ nombre de archivo [yo @ linuxbox ~] $ mv $ nombre de archivo $ nombre de archivo1

mv: falta el operando del archivo de destino después de `myfile 'Intente con` mv --help' para obtener más información.


Este intento falla porque el shell interpreta el segundo argumento del mv comando como una nueva (y vacía) variable. El problema se puede solucionar de esta manera:



[yo @ linuxbox ~] $ mv $ nombre de archivo $ {nombre de archivo} 1

[yo @ linuxbox ~] $ mv $ nombre de archivo $ {nombre de archivo} 1


Al agregar las llaves circundantes, el shell ya no interpreta el final 1 como parte del nombre de la variable.

Aprovecharemos esta oportunidad para agregar algunos datos a nuestro informe, a saber, la fecha y hora en que se creó el informe y el nombre de usuario del creador:



#! / Bin / bash

# Programa para generar una página de información del sistema TITLE = "Informe de información del sistema para $ HOSTNAME"

CURRENT_TIME = $ (fecha + "% x% r% Z")

TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"


eco "

$ TITLE

$ TITLE

$ TIMESTAMP

"

#! / Bin / bash

# Programa para generar una página de información del sistema TITLE = "Informe de información del sistema para $ HOSTNAME"

CURRENT_TIME = $ (fecha + "% x% r% Z")

TIMESTAMP = "Generado $ CURRENT_TIME, por $ USER"


eco "

$ TITLE

$ TITLE

$ TIMESTAMP

"


Top OS Cloud Computing en OnWorks: