variable
1. El papel de las variables
- Se utiliza para almacenar parámetros (valores) específicos que el sistema y los usuarios necesitan utilizar
- Nombre de variable: use un nombre fijo, preestablecido por el sistema o definido por el usuario
- Valor variable: se puede cambiar según la configuración del usuario y los cambios del entorno del sistema
Dos, el tipo de variable
- Variables: valores que cambian, a diferencia de las constantes (básicamente no hay constantes en el shell)
- Variables personalizadas: definidas, modificadas y utilizadas por los usuarios
- Variables especiales:Variable ambiental、Variable de solo lectura、Variable de ubicación、Variables predefinidas
Tres variables personalizadas
3.1 Definir una variable
- Los nombres de las variables comienzan conletraoGuion bajoAl principio, y distingue entre mayúsculas y minúsculas, pero para distinguir claramente,Sugerir todo en mayúsculas.
Nombre de la variable = valor de la variable ("=" No puede haber espacios en ambos lados, significa asignación, "=" Asignar de derecha a izquierda).
3.2 Ver el valor de una variable
echo $
ejemplo de nombre de variable :
3.3 Utilice comillas al asignar valores
- Comillas dobles: permite citar otros valores de variable mediante el símbolo $
- Comillas simples: está prohibido citar otros valores de variables, $ se trata como un carácter normal
- Comando invertido: sustitución de comando, extraer el resultado de salida después de la ejecución del comando, `` tiene el mismo efecto que $ (...)
Ejemplo:
3.4 Establecer el alcance de la variable
Podemos usar el comando pstree para ver el entorno de Shell:
ingrese el comando bash para ingresar al entorno de sub-Shell:
presione Ctrl + D o ingrese el comando de salida para salir del entorno de sub-Shell: por
defecto, las variables recién definidas solo son válidas en el entorno de Shell actual, por lo que se llamanVariable local. Al entrar en la subrutina o en el nuevo entorno de sub-Shell, las variables locales ya no se pueden utilizar.
Las variables especificadas se pueden exportar como variables globales a través de la exportación de comandos internos, de modo que las variables definidas por el usuario puedan continuar usándose en todos los entornos de sub-Shell.
Formato 1:
nombre de variable de exportación
Formato 2:
nombre de variable de exportación = valor de variable
Ejemplo:
3.5 Operación de variables enteras
Formato:
expr variable 1 operador variable 2 [operador variable 3]
operador: + suma, -susta, * multiplicación, / división,% resto
常用的运算表达式:
i=$(expr 12 \* 5)
i=$((10 * 5))
i=$[10 * 4]
let i=10*3
i++ 相当于 i=$[$i+1]
i-- 相当于 i=$[$i-1]
i+=2 相当于 i=$[$i+2]
Ejemplo:
Nota: bash solo puede realizar operaciones con números enteros
Ejemplo:
Bash no admite operaciones de punto flotante. Si necesita realizar operaciones de punto flotante, puede usar bc, awk.
Introducción detallada: aritmética de punto flotante en la enseñanza básica de shell .
Cuatro variables de shell especiales
4.1 Variables ambientales
Creado de antemano por el sistema para configurar el entorno de trabajo del usuario.
Archivos de configuración: / etc / profile (globalmente efectivo), ~ / .bash_profile (entorno de usuario actual)
常见环境变量
PWD、PATH
USER、SHELL、HOME
Utilice el comando env para ver las variables de entorno en el entorno de trabajo actual:
- variableUSUARIOIndica el nombre de usuario
- CASAIndica el directorio de inicio del usuario
- LANGRepresenta el idioma y el juego de caracteres.
- PWDIndica el directorio de trabajo actual
- variableCAMINORepresenta la ruta de búsqueda predeterminada para programas ejecutables.
相关命令:
echo $PATH #查看当前搜索路径
PATH="$PATH:/root" #将/root目录添加到搜索路径
export PATH="$PATH:/root" #输出为全局环境变量
first.sh
4.2 Variables de solo lectura
Se utiliza cuando no se permite modificar el valor de la variable.
readonly 命令设置只读变量
readonly PRODUCT #设置为只读变量
echo $PRODUCT
PRODUCT=Python #只读变量不可以被重新赋值
unset PRODUCT #只读变量不可以被删除,unset 命令用于删除变量,但无法删除只读变量,只能重启系统解决
Ejemplo:
4.3 Variables de ubicación
- Expresado como $ n, n es un número entre 1-9, $ 0 representa el comando en sí, 1-9 representa del primero al noveno parámetro,Más de diez parámetros deben usar {} para indicar。
- Al ejecutar operaciones de línea de comando, los parámetros de cadena se asignan a las variables de posición en orden de izquierda a derecha.
4.4 Variables predefinidas
$*、$@:表示命令或脚本要处理的参数。
$*:把所有参数看成以空格分隔的一个字符串整体,代表"$1 $2 $3 $4"。
$@:把各个参数加上双引号分隔成n份的参数列表,每个参数是独立 的,代表"$1" "$2" "$3" "$4"。
$0:表示当前执行的脚本或命令的名称。
$#:表示命令或脚本要处理的参数的个数。
$?:表示前一条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。
也常被用于Shell脚本中return退出函数并返回的退出值。
vim mybak.sh
#!/bin/bash
time=backup-`date +%F`.tar.gz
tar zcf $time $* &> /dev/null #/dev/null表示的是一个黑洞文件,通常用于丢弃不需要的数据输出
echo "已执行 $0 脚本,"
echo "共完成 $# 个对象的备份"
echo "具体内容包括: $*"
chmod +x mybak.sh
./mybak.sh /etc/passwd /etc/shadow
Ejemplo: