Comando Linux test

Linux 命令大全Manual completo de comandos Linux


testEs un comando integrado en el sistema Linux/Unix utilizado para la evaluación de condiciones. Se usa principalmente en scripts de shell para realizar diversas pruebas y operaciones de comparación. Puede verificar atributos de archivos, comparar cadenas y valores numéricos, y es una herramienta indispensable para escribir scripts de shell.


Sintaxis básica

test EXPRESSION
# 或者使用方括号格式(更常用)
[ EXPRESSION ]

Nota: cuando se utiliza el formato de corchetes, debe haber un espacio entre la expresión y los corchetes, es decir[空格EXPRESSION空格]


Clasificación de funciones principales

1. Pruebas de archivos

Verifica varios atributos de archivos o directorios:

Expresión Significado
-e 文件 El archivo existe
-f 文件 Es un archivo normal (no un directorio ni un archivo de dispositivo)
-d 文件 Es un directorio
-s 文件 El tamaño del archivo no es cero (no está vacío)
-r 文件 El archivo es legible
-w 文件 El archivo es escribible
-x 文件 El archivo es ejecutable
-L 文件 El archivo es un enlace simbólico

Ejemplo:

Ejemplo

if [ -f "/etc/passwd" ]; then
    echo "Este es un archivo normal"
fi

2. Comparación de cadenas

Compara la relación entre dos cadenas:

Expresión Significado
-z "字符串" La longitud de la cadena es 0
-n "字符串" La longitud de la cadena no es 0
"串1" = "串2" Las cadenas son iguales
"串1" != "串2" Las cadenas no son iguales

Ejemplo:

Ejemplo

read -p "Ingrese el nombre de usuario: " username
if [ -z "$username" ]; then
    echo "El nombre de usuario no puede estar vacío"
fi

3. Comparación numérica

Compara la relación de magnitud entre dos números enteros:

Expresión Significado
n1 -eq n2 Igual a (equal)
n1 -ne n2 Diferente de (not equal)
n1 -gt n2 Mayor que (greater than)
n1 -ge n2 Mayor o igual que
n1 -lt n2 Menor que (less than)
n1 -le n2 Menor o igual que

Ejemplo:

Ejemplo

if [ $(id -u) -eq 0 ]; then
    echo "Actualmente es el usuario root"
fi

4. Operadores lógicos

Combina múltiples condiciones de prueba:

Operador Significado Ejemplo
! Negación lógica [ ! -f file ]
-a Y lógico (AND) [ -f file -a -r file ]
-o O lógico (OR) [ -d dir -o -f file ]

Forma moderna recomendada(usando&&y||):

Ejemplo

[ -f file ] && [ -r file ]  # El archivo existe y es legible
[ -d dir ] || [ -f file ]   # Es un directorio o es un archivo

Uso avanzado

1. Evaluación de condiciones compuestas

Ejemplo

if [ -f "/etc/passwd" -a -r "/etc/passwd" ]; then
    echo "El archivo existe y es legible"
fi

2. Combinación con la sentencia if

Ejemplo

if [ "$1" = "start" ]; then
    echo "Iniciando servicio..."
elif [ "$1" = "stop" ]; then
    echo "Deteniendo servicio..."
else
    echo "Parámetro inválido"
fi

3. Uso en asignación de variables

Ejemplo

[ -z "$PATH" ] && PATH="/usr/bin:/bin"  # Si PATH está vacío, se establece un valor predeterminado

Errores comunes y precauciones

Problemas con los espacios:

Ejemplo

[ "$var" = "value" ]  # Correcto
[ "$var"="value" ]    # Error, falta un espacio

Comillas en variables de cadena:

Ejemplo

[ -n "$var" ]  # Correcto, evita errores cuando la variable está vacía
[ -n $var ]    # Cuando $var está vacío, se produce un error

Comparación numérica y comparación de cadenas:

Ejemplo

[ "10" -gt "2" ]  # Correcto, comparación numérica
[ "10" > "2" ]    # Error, esto es una comparación de cadenas (orden lexicográfico)

Ruta en las pruebas de archivos:

Ejemplo

[ -f "$file" ]    # Correcto, la variable se envuelve entre comillas
[ -f $file ]      # Se producirá un error cuando la ruta contenga espacios

Ejemplos de aplicación práctica

Ejemplo 1: Comprobar si existe el directorio de respaldo

Ejemplo

backup_dir="/var/backups"
if [ ! -d "$backup_dir" ]; then
    mkdir -p "$backup_dir"
    echo "Creando directorio de respaldo:"$backup_dir"
fi

Ejemplo 2: Validar la entrada del usuario

Ejemplo

read -p "Ingrese la edad: " age
if [ "$age" -lt 0 -o "$age" -gt 120 ]; then
    echo "Entrada de edad inválida"
    exit 1
fi

Ejemplo 3: Script de inicio de servicio

Ejemplo

#!/bin/bash

if [ "$1" = "start" ]; then
    if [ -f "/var/run/service.pid" ]; then
        echo "El servicio ya está en ejecución"
    else
        echo "Iniciando servicio..."
        # Comando de inicio
    fi
elif [ "$1" = "stop" ]; then
    # Lógica de detención
else
    echo "Uso: $0 {start|stop}"
fi

Resumen

testEl comando es una herramienta fundamental en la programación de scripts de shell. Dominarlo permite:

  • Implementar lógica de ramificación condicional
  • Verificar el estado de archivos y directorios
  • Comparar cadenas y valores numéricos
  • Construir condiciones de evaluación complejas

Recuerde los puntos clave:

  1. El formato de corchetes es más común, pero preste atención a los espacios
  2. Las referencias a variables deben ir entre comillas dobles
  3. Distinga entre los operadores de comparación de cadenas y de comparación numérica
  4. Use la forma moderna&&y||en lugar de-ay-o

Linux 命令大全Manual completo de comandos Linux

Otras extensiones