La diferencia y el uso de variables de usuario y variables de entorno en Shell
El shell tiene los siguientes tipos de variables básicas:
1) Variables de entorno definidas por el shell p>
shell define algunas variables relacionadas con el entorno de trabajo del sistema al comienzo de la ejecución, y estas variables pueden ser redefinidas por el usuario. Estas variables pueden ser redefinidas por el usuario. Las variables de entorno de shell comúnmente utilizadas son:
INICIO: el nombre de ruta completo utilizado para almacenar el directorio de registro.
RUTA: Almacena las rutas de directorio separadas por dos puntos. El shell busca estos directorios en el orden indicado en la variable PATH y se ejecuta el primer archivo ejecutable encontrado que coincida con el nombre del comando.
TERMINO: tipo de terminal.
UID: El identificador del usuario actual, el valor es una cadena de números.
PWD: El nombre de ruta absoluta del directorio de trabajo actual. El valor de esta variable cambia con el uso del comando cd.
PS1: Mensaje principal para usuarios privilegiados, el mensaje principal predeterminado es "#". Para usuarios normales, el mensaje principal predeterminado es "$".
PS2: En el proceso en el que el shell recibe el comando de entrada del usuario, si el usuario ingresa "\" al final de la línea de entrada y luego presiona Enter, o cuando el usuario presiona la tecla Enter, el shell determina que el comando ingresado por el usuario no existe. Cuando se completa, se muestra un mensaje auxiliar que solicita al usuario que continúe ingresando comandos. El mensaje secundario predeterminado es ">".
2) Variables definidas por el usuario
Los usuarios pueden definir sus propias variables de acuerdo con las siguientes reglas de sintaxis:
Nombre de la variable = valor de la variable
Una cosa a tener en cuenta es que al definir una variable, el símbolo "$" no debe usarse antes del nombre de la variable, y al hacer referencia al contenido de la variable, se debe usar "$" antes del nombre de la variable. Al citar el contenido de una variable, se debe agregar "$" antes del nombre de la variable; al asignar un valor a una variable, no debe haber espacios a ninguno de los lados del signo igual. Si la variable en sí contiene espacios, toda la cadena. debe estar entre comillas dobles.
Al escribir programas de shell, se recomienda que todos los nombres de variables utilicen letras mayúsculas para distinguirlos de los nombres de comandos.
A veces, queremos especificar una variable y establecerla en un valor específico sin cambiar su valor. Esto se puede lograr usando el siguiente comando para garantizar que la variable sea de solo lectura:
nombre de variable leído
En cualquier momento, las variables creadas son solo variables locales del shell actual y, por lo tanto, no pueden ser utilizadas por otros comandos o programas de shell ejecutados por el shell. El comando de exportación pone las variables locales a disposición de otros comandos del shell en el siguiente formato:
exportar nombre de variable
Alternativamente, también puede utilizar el comando de exportación al asignar valores a las variables:
exportar Nombre de variable=Valor de variable
Las variables descritas por exportación no se pueden usar en el shell en ningún momento, por lo que otros comandos o programas de shell que se ejecutan en el shell no pueden usar estas variables. Se puede acceder a las variables especificadas con la exportación mediante cualquier comando o programa ejecutado desde el shell.
3) Parámetros posicionales
Los parámetros posicionales son variables determinadas por su posición en la línea de comando que llama al programa shell. Son parámetros ingresados después del nombre del programa. Los argumentos posicionales están separados por espacios y el shell reemplaza el primer argumento posicional con $1 en el archivo de programa, el segundo con $2, y así sucesivamente. El elemento 0 es una variable especial y su contenido es el nombre de archivo del programa de shell actual. Por lo tanto, el elemento 0 no es un parámetro posicional y no se incluye al mostrar todos los parámetros posicionales actuales.
4) Variables predefinidas
Las variables predefinidas son similares a las variables de entorno. Se definen al principio del shell, pero los usuarios solo pueden usarlas de acuerdo con la definición del shell y. No se puede redefinir. Todas las variables predefinidas constan de un carácter $ seguido de otro símbolo.
Las variables predefinidas del shell más utilizadas son:
$#: el número de parámetros posicionales
$*: el contenido de todos los parámetros posicionales
$?: ejecución del comando El estado devuelto después
$$: el número de proceso del proceso actual
$! : El número de proceso del último proceso que se ejecutó en segundo plano
$0: El nombre del proceso que se está ejecutando actualmente
Donde se usa "$?" correctamente (en Linux, un estado de salida del comando de 0 significa que el comando se ejecutó correctamente, cualquier valor distinto de cero significa un error de comando).
El uso más común de la variable "$$" es como nombre de un archivo temporal para garantizar que los archivos temporales no se dupliquen.
5) Variables de intercambio de parámetros
Shell proporciona una función de intercambio de parámetros, por lo que puede asignar diferentes valores a las variables según diferentes condiciones. Hay cuatro tipos de variables de sustitución de parámetros, generalmente asociadas con parámetros posicionales, y su sintaxis y funciones son las siguientes:
Hay cuatro tipos de variables de sustitución de parámetros, generalmente asociadas con parámetros posicionales, y sus funciones son como sigue.
a. variable=${parameter-word}: si el parámetro está configurado, reemplace el valor de la variable con el valor del parámetro; de lo contrario, reemplace el valor de la variable con la palabra. Es decir, el valor de la variable es igual al valor de un parámetro particular, o si el parámetro no está configurado, la variable es igual al valor de palabra.
b.variable=${parameter=word}: si el parámetro está configurado, reemplace el valor de la variable con el valor del parámetro; de lo contrario, establezca la variable en palabra y luego reemplace el valor del parámetro con palabra. Tenga en cuenta que los parámetros posicionales no se pueden utilizar de esta manera porque a los parámetros posicionales no se les pueden asignar valores en el shell.
c.variable=${parameter?word}: si el parámetro está configurado, reemplace el valor de la variable con el valor del parámetro; de lo contrario, muestre la palabra y salga del shell. Si se omite la palabra, se muestra la información estándar. . Esta variable debe ser igual al valor del parámetro. Si el parámetro no está configurado, se mostrará un mensaje y se cerrará, por lo que a menudo se usa para mensajes de error.
d.variable=${parameter+word}: Si se ha configurado el parámetro, reemplace la variable con word, de lo contrario no será reemplazada.
En las cuatro formas, los "parámetros" pueden ser parámetros posicionales u otras variables, pero los parámetros posicionales se utilizan con más frecuencia.