[Linux] Conceptos básicos de Shell: variables Bash

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

inserte la descripción de la imagen aquí

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.

inserte la descripción de la imagen aquí

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.

inserte la descripción de la imagen aquí

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:

inserte la descripción de la imagen aquí

Luego podemos modificarlo.Por ejemplo, cambié **\h , que es el nombre de usuario de salida, a tiempo de salida \t**.

inserte la descripción de la imagen aquí

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:

inserte la descripción de la imagen aquí

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:

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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.

inserte la descripción de la imagen aquí

  • $$,$!

Cree un script de shell e ingrese lo siguiente, & significa poner el script en segundo plano:

inserte la descripción de la imagen aquí

Ejecute el script:

chmod 755 canshu3.sh
./canshu3.sh

inserte la descripción de la imagen aquí

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"

Supongo que te gusta

Origin blog.csdn.net/watermelon_c/article/details/124359986
Recomendado
Clasificación