stringtranslate.com

prueba (Unix)

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]

Descripción general

El testcomando en Unix evalúa el expressionpará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 testcomando 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 testincluida 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]

Sintaxis

test expressiono[ expression ]

Argumentos

Los siguientes argumentos se utilizan para construir este parámetro. Todos los argumentos devuelven Truesi el objeto (archivo o cadena) existe y la condición especificada es verdadera.

Para el -xargumento, si el archivo especificado existe y es un directorio, el Truevalor de salida indica que el proceso actual tiene permiso para cambiar cdal directorio.

No estándarCáscara de maízextensiones

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 )

Argumentos de cadena

En Perl , estas secciones están invertidas: eqes 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

Argumentos numéricos

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

Operadores

testLos argumentos se pueden combinar con los siguientes operadores:

! - Operador de negación unario -a - Operador binario AND -o - Operador binario OR (el -aoperador tiene mayor precedencia que el -ooperador ) \(Expresión\) - Los paréntesis para agrupar deben escaparse con una barra invertida\

Los operadores -ay -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 testcon los operadores &&y ||y los paréntesis.

Estado de salida

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

Ejemplos

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.

Véase también

Referencias

  1. ^ http://www.in-ulm.de/~mascheck/bourne/#system3 Cambios en Bourne Shell con System III
  2. ^ test(1) — coreutils — Debian buster — Páginas del manual de Debian
  3. ^ "Puertos Win32 nativos de algunas utilidades GNU". unxutils.sourceforge.net .
  4. ^ IBM . "Programación Qshell para IBM System i versión 7.2" (PDF) . IBM . Consultado el 5 de septiembre de 2020 .
  5. ^ IEEE Std 1003.1, 2004, documentación para pruebas

Lectura adicional

Enlaces externos