test es una utilidad de línea de comandos que se encuentra en Unix , Plan 9 y sistemas operativos similares a Unix y que evalúa expresiones condicionales . test se convirtió en un comando integrado de shell en 1981 con UNIX System III y al mismo tiempo se puso a disposición con el nombre alternativo [ . [1]
El test
comando en Unix evalúa el expression
parámetro. En las implementaciones de shell más recientes, es un comando incorporado del shell , aunque todavía existe la versión externa. En la segunda forma del comando, los [ ]
(corchetes) deben estar rodeados de espacios en blanco (esto se debe a que [
es un programa y los shells compatibles con POSIX requieren un espacio entre el nombre del programa y sus argumentos). Se deben probar explícitamente los nombres de archivo en el shell C. La sustitución de nombres de archivo ( globbing ) hace que el script de shell salga.
El test
comando no debe confundirse con la [[
palabra reservada que se introdujo con ksh88. Esta última no es un comando sino parte de la sintaxis de ksh88 y no aplica la sustitución de nombre de archivo a las expresiones glob.
La versión test
incluida en GNU coreutils fue escrita por Kevin Braunsdorf y Matthew Bradburn. [2] El comando está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos Win32 nativos de utilidades comunes de GNU similares a Unix. [3] El comando de prueba también ha sido portado al sistema operativo IBM i . [4]
test expression
o[ expression ]
Los siguientes argumentos se utilizan para construir este parámetro. Todos los argumentos devuelven True
si el objeto (archivo o cadena) existe y la condición especificada es verdadera.
Para el -x
argumento, si el archivo especificado existe y es un directorio, el True
valor de salida indica que el proceso actual tiene permiso para cambiar cd
al directorio.
file1 -nt file2 - el archivo1 es más nuevo que el archivo2file1 -ot file2 - el archivo1 es más antiguo que el archivo2file1 -ef file2 - file1 es otro nombre para file2 - ( enlace simbólico o enlace duro )
En Perl , estas secciones están invertidas: eq
es un operador de cadena y ==
es un operador numérico, y así sucesivamente para los demás.
-n String1 - la longitud de la variable String1 es distinta de cero -z String1 - la longitud de la variable String1 es 0 (cero)String1 = String2 - Las variables String1 y String2 son idénticasString1 != String2 - Las variables String1 y String2 no son idénticasString1 - verdadero si la variable String1 no es una cadena nula
Integer1 -eq Integer2 - Las variables Integer1 y Integer2 son algebraicamente iguales -ne - no igual -gt - mayor que -ge - mayor o igual -lt - menor que -le - menor o igual
test
Los argumentos se pueden combinar con los siguientes operadores:
! - Operador de negación unario -a - Operador binario AND -o - Operador binario OR (el-a
operador tiene mayor precedencia que el-o
operador ) \(Expresión\) - Los paréntesis para agrupar deben escaparse con una barra invertida\
Los operadores -a
y -o
, junto con los paréntesis para agrupar, son extensiones XSI [5] y, por lo tanto, no son portables. En los scripts de shell portables, se puede lograr el mismo efecto conectando múltiples invocaciones de test
con los operadores &&
y ||
y los paréntesis.
Este comando devuelve los siguientes valores de salida:
0 - El parámetro Expresión es verdadero 1 - El parámetro Expresión es falso o falta >1 - Ocurrió un error
1. Para comprobar si un archivo no existe o está vacío, escriba:
si prueba ! -s " $1 " entonces echo $1 no existe o está vacío . fi
Si el archivo especificado por el primer parámetro posicional del procedimiento de shell, $1, no existe o tiene un tamaño de 0, el comando de prueba muestra el mensaje. Si $1 existe y tiene un tamaño mayor que 0, el comando de prueba no muestra nada.
Nota: Debe haber un espacio entre la función -s y el nombre del archivo.
Las comillas que rodean $1 garantizan que la prueba funcione correctamente incluso si el valor de $1 es una cadena nula. Si se omiten las comillas y $1 es la cadena vacía, el comando de prueba muestra el mensaje de error:
prueba: argumento esperado.
2. Para hacer una comparación compleja, escriba:
si [ " $# " -lt 2 ] || ! [ -e " $1 " ] entonces salir fi
Si se proporcionan menos de dos parámetros posicionales al procedimiento de shell o el archivo especificado por $1 no existe, el procedimiento de shell finaliza. La variable especial de shell $# representa la cantidad de parámetros posicionales ingresados en la línea de comandos que inicia este procedimiento de shell.