English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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 $).
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.
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.
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
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.
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.
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
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} !
string="abcd" echo ${#string} # salida 4
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 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.
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.
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.
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[@]}
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]}
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 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... !