Directorio de artículos
variable definida por el usuario
Reglas de configuración de variables
- Los nombres de variables pueden consistir en letras, números y guiones bajos, pero no pueden comenzar con un número.
- En Bash, los tipos predeterminados de variables son cadenas.Si desea realizar operaciones numéricas, debe modificar el tipo de variable especificado para que sea numérico.
- Las variables usan un signo igual para conectar valores, y no debe haber espacios en los lados izquierdo y derecho del signo igual.
- Si el valor de la variable tiene espacios, debe estar entre comillas simples o dobles.
- En el valor de una variable, se puede utilizar el carácter de escape "\".
- Si se necesita aumentar el valor de la variable, se puede realizar la superposición del valor de la variable. Sin embargo, las variables deben encerrarse entre comillas dobles "$nombre de variable" o incluirse con ${nombre de variable}, que es más abstracto aquí, y habrá ejemplos en las siguientes variables locales.
- Si asigna el resultado del comando a una variable como valor de variable, debe usar acentos graves o $() para incluir el comando. Por ejemplo, si asigna la salida de la fecha del comando a una variable, debe escribir :
name=$(date)
- Se recomienda poner en mayúscula los nombres de las variables de entorno para facilitar su distinción.
Clasificación de variables
- Variables definidas por el usuario.
- Variable de entorno: Esta variable guarda principalmente datos relacionados con el entorno operativo del sistema.
- Variable de parámetro posicional: esta variable se utiliza principalmente para pasar parámetros o datos al script. El nombre de la variable no se puede personalizar y la función de la variable es fija.
- Variable predefinida: es una variable que se ha definido en Bash. El nombre de la variable no se puede definir y la función de la variable es fija.
variable local
Definiciones de variables:
a=12
Superposición de variables:
a=12
b=${a}34
Llamada variable:
echo $b
Vista de variables:
set
Eliminación de variables (por ejemplo, eliminar variable a):
unset a
Variable ambiental
Las variables definidas por el usuario solo surten efecto en el shell actual, mientras que las variables de entorno surten efecto en el shell actual y en todos los subshells de este shell. Si la variable de entorno se escribe en el archivo de configuración correspondiente, la variable de entorno tendrá efecto en todos los shells.
Por ejemplo, si ingresamos bash en la línea de comando , ingresaremos al sub-shell.Podemos usar el comando pstree para ver el árbol de procesos, y podemos ver el shell en el que nos encontramos actualmente.
Si usamos el comando exit para volver al shell principal y declaramos la variable de entorno en el shell principal, la variable de entorno también tendrá efecto en todos sus shells secundarios en este momento.
Establecer variables de entorno
declarar variables:
export 变量名=变量值
variable de consulta:
env
Eliminar variables:
unset 变量名
Las variables de entorno también se pueden llamar directamente con eco, al igual que llamar a métodos con variables locales.
Variables de entorno comunes del sistema
SENDERO
La ruta PATH donde el sistema busca los comandos, separados por dos puntos.
Esto también explica por qué no necesitamos usar rutas absolutas al ejecutar comandos. Si el comando que ingresamos no se puede encontrar en estas rutas, entonces el comando informará un error. Si copiamos el script de shell que escribimos en estas rutas. También puede ejecútelo sin ingresar una ruta absoluta o una ruta relativa, pero si desea hacer esto, se recomienda el siguiente método.
Agregue la ruta a PATH :
Por ejemplo, agrego la carpeta que uso para instalar archivos de shell a la RUTA.
PATH=$(PATH):/root/sh
ps1
PS1 es la variable que define el aviso del sistema.
\d:显示日期,格式为“星期 月 日”。
\h:显示简写主机名。如默认主机名“localhost”。
\t:显示24小时制时间,格式为“HH:MM:SS”。
\T:显示12小时制时间,格式为“HH:MM:SS”。
\A:显示24小时制时间,格式为“HH:MM”。
\u:显示当前用户名。
\W:显示当前所在目录的完整名称。
\w:显示当前所在目录的完整路径。
\#:执行的第几个命令。
\$:提示符,如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”。
Primero echemos un vistazo a los valores predeterminados de la PS1 actual:
Luego podemos modificarlo.Por ejemplo, cambié **\h , que es el nombre de usuario de salida, a tiempo de salida \t**.
En comparación, se encuentra que la ubicación del nombre de usuario del indicador se ha convertido en la hora. Si desea mostrar otras cosas, puede definir el indicador usted mismo.
variable de parámetro posicional
variable de parámetro posicional | efecto |
---|---|
$n | n es un número, $0 representa el comando en sí, $1-$9 representa el noveno parámetro del primer canal, y más de diez parámetros deben estar encerrados entre corchetes, como ${10}. |
ps | Este comando representa todos los parámetros en la línea de comando y $* trata todos los parámetros como un todo. |
ps | Esta variable también representa todos los parámetros en la línea de comando, pero $@ trata cada parámetro por separado. |
ps | Esta variable representa el número de todos los argumentos en la línea de comando. |
Explique las variables de los parámetros anteriores:
- $n
Por ejemplo, creo un script de shell e ingreso lo siguiente:
Luego ejecute el script:
chmod 755 canshu1.sh
./canshu1.sh
Encontramos que no hay salida de parámetros, esto se debe a que no escribimos parámetros, si pasamos los parámetros correspondientes antes de ejecutar el archivo de script, por ejemplo, paso 12, 13, 14 como parámetros a $1, $2, $3, y luego La ejecución tendrá la salida del parámetro correspondiente:
./canshu1.sh 12 13 14
generará 12 13 14 en consecuencia
- $*,$@,$#
Cree un script de shell e ingrese lo siguiente:
Siéntase libre de ingresar algunos parámetros y ejecutar el script:
chmod 755 canshu2.sh
./canshu2.sh 11 222 333 4 555 66 7
Nota: aunque $* y $@ tienen el mismo resultado, $* trata todos los parámetros como un todo, lo que equivale a un parámetro, y los parámetros representados por $@ son independientes.
variables predefinidas
variables predefinidas
variables predefinidas | efecto |
---|---|
ps | El estado de retorno del último comando ejecutado. Si el valor de esta variable es 0, prueba que el comando anterior se ejecutó correctamente; si el valor devuelto por esta variable no es 0 (cuyo número lo determina el propio comando), prueba que el comando anterior se ejecutó incorrectamente. |
$$ | ID de proceso (PID) del proceso actual |
ps | ID de proceso (PID) del último proceso que se ejecuta en segundo plano |
Explique las variables anteriores:
- ps
Por ejemplo, después de ejecutar el comando ls, si ingreso echo $? y la salida es 0, significa que ls se ejecuta correctamente.
- $$,$!
Cree un script de shell e ingrese lo siguiente, & significa poner el script en segundo plano:
Ejecute el script:
chmod 755 canshu3.sh
./canshu3.sh
recibir entrada de teclado
read [选项][变量名]
选项:
-p "提示信息":在等待read输入时,输入提示信息。
-t 秒数:read命令会一直等待输入,使用此选项可以指定等待时间。
-n 字符数:read命令智慧接收指定的字符数,就会执行。
-s 隐藏输入的数据,使用与机密信息的输入。
Por ejemplo, cree un script y escriba lo siguiente:
#!/bin/bash
read -t 30 -p "Please input your name:" name
#提示输入名字并等待30s,把用户的输入保存在变量name中
echo "Name is $name"
read -s -t 30 -p "Please enter your age:" age
#年龄是隐私,用“-s”隐藏输入
echo -e "\n"
read -n 1 -t 30 -p "Please select your gender[M/F]:" gender
#使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车)
echo -e "\n"
echo "Sex is $gender"