English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

variable Shell

Al definir una variable, no agregue el símbolo $ delante del nombre de la variable (como en PHP), por ejemplo:

your_name="w"3codebox.com"

Tenga en cuenta que no se puede usar espacio entre el nombre de la variable y el signo de igual (=), esto puede ser diferente de todos los lenguajes de programación que conoce. Además, el nombre de la variable debe seguir las siguientes reglas:

  •             El nombre solo puede usar letras, números y guiones bajos, y el primer carácter no puede comenzar con un número.

  •             No se pueden usar espacios en el medio, se pueden usar guiones bajos (_).

  •             No se pueden usar símbolos de puntuación.

  •             No se pueden usar palabras clave de bash (puede usar el comando help para ver las palabras clave reservadas).

Ejemplos de nombres de variables válidos de Shell:

w3codebox
LD_LIBRARY_PATH
_var
var2

Nombres de variables no válidos:

?var=123
user*name=w3codebox

Además de asignar valores explícitamente, también se puede asignar valores a variables con instrucciones, como:

for file in `ls /etc`
o
for file in $(ls /etc)

Las siguientes instrucciones harán: /Ciclo de nombres de archivos en el directorio de etc.

Uso de variables

Para usar una variable definida, simplemente agregue el símbolo $ delante del nombre de la variable, por ejemplo:

your_name="qinjx"
echo $your_name
echo ${your_name}

Los corchetes fuera del nombre de la variable son opcionales, puede usarlos o no, los corchetes se utilizan para ayudar al intérprete a identificar los límites de la variable, por ejemplo:

for skill in Ada Coffee Action Java; do
    echo "I am good at ${skill}Script"
hecho

Si no agrega corchetes al nombre de la variable skill, escribiendo echo "I am good at $skillScript", el intérprete lo interpretará como una variable (con un valor vacío), y el resultado de la ejecución del código no será el esperado.

Recomiendo que todos los nombres de variables tengan corchetes, es un buen hábito de programación.

Las variables ya definidas pueden ser redefinidas, por ejemplo:

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

Esto es válido, pero tenga cuidado, no escriba $your_name="alibaba" en la segunda asignación, úselo solo cuando necesite variables (con el símbolo $).

Variables de solo lectura

Se puede usar el comando readonly para definir una variable de solo lectura, el valor de una variable de solo lectura no se puede cambiar.

El siguiente ejemplo intenta cambiar una variable de solo lectura, y se produce un error:

#!/bin/bash
myUrl="https://www.google.com"
readonly myUrl
myUrl="https://es.oldtoolbag.com"

Ejecutar el script, los resultados son los siguientes:

/bin/sh: NAME: Esta variable es de solo lectura.

Eliminar variable

Se puede usar el comando unset para eliminar variables. Sintaxis:

unset variable_name

Después de que se elimine una variable, no se puede usar nuevamente. El comando unset no puede eliminar variables de solo lectura.

Ejemplo

#!/bin/sh
myUrl="https://es.oldtoolbag.com"
unset myUrl
echo $myUrl

La ejecución del ejemplo anterior no generará ninguna salida.

Tipos de variable

Al ejecutar Shell, existen tres tipos de variables al mismo tiempo:

  • 1) variables localesLas variables locales se definen en un script o comando, y solo son válidas en el entorno de Shell actual, otros programas iniciados por Shell no pueden acceder a las variables locales.

  • 2) variables de entornoTodos los programas, incluyendo los programas iniciados por Shell, pueden acceder a las variables de entorno, algunos programas necesitan variables de entorno para garantizar su funcionamiento normal. En casos necesarios, los scripts de Shell también pueden definir variables de entorno.

  • 3) variables de ShellLas variables de Shell son variables especiales establecidas por el programa Shell. Algunas de las variables de Shell son variables de entorno y otras son variables locales, estas variables garantizan el funcionamiento normal de Shell

Cadenas de Shell

Las cadenas son el tipo de datos más común y útil en la programación de shell (aparte de los números y las cadenas, no hay otros tipos de datos que usar), las cadenas pueden estar entre comillas simples, comillas dobles, o no usar comillas.

comillas simples

str='this is a string'

Limitaciones de las cadenas de comillas simples:

  •             Cualquier carácter dentro de las comillas simples se mostrará tal cual, y las variables dentro de una cadena de comillas simples no son válidas;

  •             No se puede usar una comilla simple sola en una cadena de comillas simples (ni siquiera después de usar el carácter de escape), pero pueden aparecer en pares, como parte de la concatenación de cadenas.

comillas dobles

your_name='w3codebox'
str="Hello, yo sé que eres \"$your_name\"! \n"
echo -e $str

El resultado de la salida es:

¡Hola, yo sé que eres "w3codebox"!

Ventajas de las comillas dobles:

  •             Las variables pueden aparecer dentro de comillas dobles

  •             Los caracteres de escape pueden aparecer dentro de comillas dobles

Unir cadenas

your_name="w"3codebox"
# uso de comillas dobles para concatenar
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
# uso de comillas simples para concatenar
greeting_2='hello, '${your_name}' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2  $greeting_3

El resultado de la salida es:

hello, w3codebox ! hello, w3codebox !
hello, w3codebox ! hello, ${your_name} !

obtener la longitud de la cadena

string="abcd"
echo ${#string} # salida 4

extraer subcadena

extraer una subcadena desde la cadena en la posición 2 caracteres desde 4

string="w3codebox es un gran sitio"
echo ${string:1:4} # salida unoo

Atención:El valor de índice del primer carácter es 0

buscar subcadena

buscar caracteres i o o la posición (la que aparezca primero se calcula):

string="w3codebox es un gran sitio"
echo `expr index "$string" io` # salida 4

Atención: En el script anterior, ` es el carácter de escape, no la comilla simple '، no lo confunda.

arreglo Shell

bash admite arrays unidimensionales (no admite arrays multidimensionales) y no hay restricciones en el tamaño del array.

Al igual que en el lenguaje C, los subíndices de los elementos del array comienzan en 0. Para obtener un elemento del array se debe utilizar un subíndice, que puede ser un entero o una expresión aritmética, y su valor debe ser mayor o igual a 0.

Definir array

En Shell, se utilizan corchetes para representar arrays, y los elementos del array se separan por "espacios". La forma general de definir un array es:

数组名=(valor1 valor2 ... valor n)

por ejemplo:

array_name=(value0 value1 value2 value3)

o

array_name=(
value0
value1
value2
value3
)

También se puede definir por separado cada componente del array:

array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

No es necesario utilizar subíndices consecutivos, y el rango de los subíndices no tiene restricciones.

Leer un array

El formato general para leer un elemento de un array es:

${数组名[下标]}

por ejemplo:

valuen=${array_name[n]}

simbolo @ puede obtener todos los elementos array, por ejemplo:

echo ${array_name[@]}

obtener longitud array

método obtener longitud array método obtener longitud cadena similar, por ejemplo:

# Obtener número elementos array
longitud=${#array_name[@]}
# O
longitud=${#array_name[*]}
# Obtener longitud elemento individual array
longitudn=${#array_name[n]}

comentarios Shell

las líneas que comienzan con # son comentarios, se ignorarán por el intérprete.

a través de cada línea añadir una # número configuración múltiples comentarios, como así:

#--------------------------------------------
# Esto es un comentario
# autor:red de tutorial básico
# site:es.oldtoolbag.com
# slogan:aprender bien la base, puede ir más lejos!
#--------------------------------------------
##### Área de configuración de usuario inicio #####
#
#
# Aquí se puede agregar información descripción script
# 
#
##### Área de configuración de usuario final #####

Si durante el desarrollo, se encuentra grandes segmentos de código que necesitan comentar temporalmente, y luego descomentar, ¿qué hacer?

cada línea añadir un # símbolo es muy laborioso, se puede poner este segmento de código para comentar entre paréntesis angulares, definido como una función, sin lugar para llamar esta función, este código no se ejecutará, alcanzando el mismo efecto que el comentario.

comentarios de múltiples líneas

comentarios de múltiples líneas también se puede usar el siguiente formato:

:<<EOF
contenido comentario...
contenido comentario...
contenido comentario...
EOF

EOF también se puede usar otros símbolos:

:<<'
contenido comentario...
contenido comentario...
contenido comentario...
'
:<<!
contenido comentario...
contenido comentario...
contenido comentario...
!