Comando integrado de prueba de Bash

comando de prueba

En Tipo Unix sistemas operativos, prueba es un comando incorporado del Intento caparazón que prueba atributos de archivo y realizar cuerda y comparaciones aritméticas.

Descripción

prueba no proporciona producción , pero devuelve un estado de salida de 0 para 'verdadero' (prueba exitosa) y 1 para 'falso' (prueba fallida).

La prueba El comando se usa con frecuencia como parte de un condicional expresión . Por ejemplo, la siguiente declaración dice: 'Si 4 es mayor que 5, da como resultado sí, de lo contrario da como resultado no'.

|_+_| |_+_|

La siguiente declaración dice, 'Si 6 es mayor que 5, dé salida sí, de lo contrario dé salida no.'

|_+_| |_+_|

La prueba El comando también se puede expresar con corchetes simples [ ... ] , siempre que estén separados de todos los demás argumentos con espacio en blanco . Por ejemplo, la siguiente declaración verifica que el archivo del sistema / etc / passwd existe, y si no, emite 'uh-oh'.

|_+_| |_+_|

Sintaxis

Pruebas de archivo:

|_+_| |_+_| |_+_|

Pruebas de cadena:

|_+_| |_+_|

Opciones y variables de Shell:

|_+_| |_+_|

Lógica simple (prueba si los valores son nulos):

|_+_| |_+_|

Comparación numérica (solo para valores enteros; bash no hace matemáticas de punto flotante):

|_+_|

Opciones

La prueba El comando incorporado toma las siguientes opciones.

-a expediente Devuelve verdadero si expediente existe. Hace lo mismo que -es . Ambos se incluyen por razones de compatibilidad con versiones heredadas de Unix .
-b expediente Devuelve verdadero si expediente es 'especial de bloque'. Los archivos especiales de bloque son similares a los archivos normales, pero se almacenan en dispositivos de bloque: áreas especiales en el dispositivo de almacenamiento que se escriben o leen uno cuadra (sector) a la vez.
-c expediente Devuelve verdadero si expediente es 'carácter especial'. Los archivos especiales de caracteres se escriben o leen byte a byte (un carácter a la vez), inmediatamente, a un dispositivo especial. Por ejemplo, / dev / urandom es un archivo de carácter especial.
-D expediente Devuelve verdadero si expediente es un directorio .
-es expediente Devuelve verdadero si expediente existe. Hace lo mismo que -a . Ambos se incluyen por razones de compatibilidad con versiones heredadas de Unix.
-F expediente Devuelve verdadero si expediente existe y es un archivo normal.
-gramo expediente Devuelve verdadero si expediente tiene el setgid bit establecido.
-h expediente Devuelve verdadero si expediente es un enlace simbólico . Hace lo mismo que -L . Ambos se incluyen por razones de compatibilidad con versiones heredadas de Unix.
-L expediente Devuelve verdadero si expediente es un enlace simbólico. Hace lo mismo que -h . Ambos se incluyen por razones de compatibilidad con versiones heredadas de Unix.
-a expediente Devuelve verdadero si expediente tiene su bit pegajoso configurado.
-pag expediente Devuelve verdadero si el archivo es una tubería con nombre, por ejemplo, como se creó con el comando mkfifo .
-r expediente Devuelve verdadero si expediente es legible por el usuario que ejecuta prueba .
-s expediente Devuelve verdadero si expediente existe y no está vacío.
-S expediente Devuelve verdadero si expediente es un enchufe .
-t fd Devoluciones cierto Si descriptor de archivo fd se abre en un terminal.
-u expediente Devuelve verdadero si expediente tiene el setuid bit establecido.
-en expediente Devuelve verdadero si el usuario ejecuta prueba ha escrito permiso a expediente , es decir, hacerle cambios.
-x expediente Devuelve verdadero si expediente es ejecutable por el usuario corriendo prueba .
-O expediente Devuelve verdadero si expediente es propiedad del usuario que ejecuta prueba .
-GRAMO expediente Devuelve verdadero si expediente es propiedad del grupo del usuario que ejecuta prueba .
-NORTE expediente Devuelve verdadero si expediente se modificó desde la última vez que se leyó.
archivo1 -p.ej archivo2 Devuelve verdadero si archivo1 es más nuevo (tiene un más nuevo fecha / hora de modificación ) que archivo2 .
archivo1 -Antiguo Testamento archivo2 Devuelve verdadero si archivo1 es más antiguo (tiene una fecha / hora de modificación más antigua) que archivo2 .
archivo1 -ef archivo2 Devuelve verdadero si archivo1 es un enlace duro a archivo2 .
prueba [ -norte ] cuerda Devuelve verdadero si cuerda no está vacío. Funciona igual con o sin -norte .

Por ejemplo, si mystr = '' , luego prueba '$ mystr' y prueba -n '$ mystr' ambos serían falsos. Si mystr = 'No vacío' , luego prueba '$ mystr' y prueba -n '$ mystr' ambos serían verdad.
-con cuerda Devuelve verdadero si es una cadena cuerda está vacío, es decir, '' .
cadena1 = cadena2 Devuelve verdadero si cadena1 y cadena2 son iguales, es decir, contienen los mismos caracteres.
cadena1 != cadena2 Devuelve verdadero si cadena1 y cadena2 no son iguales.
cadena1 < cadena2 Devuelve verdadero si cadena1 ordena antes cadena2 lexicográficamente, según ASCII numeración, basada en el primer carácter de la cadena. Por ejemplo, prueba 'Apple'<'Banana' es cierto, pero prueba 'Apple'<'banana' es falso, porque todo minúscula las letras tienen un número ASCII más bajo que sus contrapartes mayúsculas.

Consejo: Incluya los nombres de las variables entre comillas dobles para proteger los espacios en blanco. También, escape el símbolo menor que con un barra invertida para evitar que bash se interprete como un operador de redirección. Por ejemplo, use prueba '$ str1' <'$str2' en vez de prueba $ str1<$str2 . El último comando intentará leer desde un archivo cuyo nombre es el valor de la variable str2 . Para más información, ver redirección en bash.
cadena1 > cadena2 Devuelve verdadero si cadena1 ordena después cadena2 lexicográficamente, según la numeración ASCII. Como se señaló anteriormente, utilice prueba '$ str1' > '$ str2' en vez de prueba $ str1> $ str2 . El último comando crea o sobrescribe un archivo cuyo nombre es el valor de la variable str2 .
-o opción Devuelve verdadero si la opción de shell optar está habilitado.
-v dónde Devuelve verdadero si el variable de shell dónde es colocar .
-R dónde Devuelve verdadero si la variable de shell dónde está establecido y es una referencia de nombre. (Es posible que esto se refiera a un referencia indirecta , como se describe en Expansión de parámetros en bash .)
! expr Devuelve verdadero si y solo si la expresión expr es nulo.
expr1 -a expr2 Devuelve verdadero si las expresiones expr1 y expr2 ambos no son nulos.
expr1 -o expr2 Devuelve verdadero si alguna de las expresiones expr1 o expr2 no son nulos.
arg1 -eq arg2 Verdadero si argumento arg1 es igual a arg2 .
arg1 -Nació arg2 Verdadero si argumento arg1 no es igual a arg2 .
arg1 -lt arg2 Verdadero si es un valor numérico arg1 es menos que arg2 .
arg1 -la arg2 Verdadero si es un valor numérico arg1 es menor o igual que arg2 .
arg1 -gt arg2 Verdadero si es un valor numérico arg1 es mayor que arg2 .
arg1 -dar arg2 Verdadero si es un valor numérico arg1 es mayor o igual a arg2.

Notas

Todos los argumentos a probar deben estar separados por un espacio, incluidos todos operadores .

La < y > Los operadores son comparaciones lexicográficas, basadas en la numeración ASCII. No son operadores numéricos (en su lugar, utilice -lt , -gt , etc. para comparar números).

El comportamiento preciso de prueba , dependiendo del número de argumentos proporcionados, es el siguiente:

# argumentos comportamiento de prueba
0 Siempre devuelve falso.
1 Devuelve verdadero, si y solo si la expresión no es nula.
2 Si el primer argumento es ! , devuelve verdadero si y solo si la expresión es nula.

Si el primer argumento es uno de los otros operadores unarios ( -a , -b , etc.), devuelve verdadero si y solo si la prueba unaria del segundo argumento es verdadera.

Si el primer argumento no es un operador unario, devuelve falso.
3 Las siguientes condiciones se aplican en el orden indicado.

Si el segundo argumento es uno de los operadores condicionales binarios enumerados anteriormente, el resultado es la prueba binaria que utiliza el primer y tercer argumento como operandos. Los operadores condicionales binarios son aquellos que toman dos operandos, por ejemplo, -p.ej , -eq , < , etc.

La -a y -o Los operadores se consideran operadores binarios cuando hay tres argumentos.

Si el primer argumento es ! , el valor es la negación de la prueba de dos argumentos utilizando el segundo y tercer argumento.

Si el primer argumento es exactamente ( y el tercer argumento es exactamente ) , el resultado es la prueba de un argumento del segundo argumento. En otras palabras, ( expr ) devuelve el valor de expr . Este caso especial existe como una forma de anular el normal precedencia de las operaciones .

De lo contrario, la expresión es falsa.
4 Si el primer argumento es ! , el resultado es la negación de la expresión de tres argumentos compuesta por los argumentos restantes.

De lo contrario, la expresión es analizado y evaluados de acuerdo con la precedencia utilizando las reglas enumeradas anteriormente.
5+ La expresión se analiza y evalúa de acuerdo con la precedencia utilizando las reglas enumeradas anteriormente.

Estado de salida

0 de verdad, 1 por falso. Cualquier valor mayor que 1 indica un error o un comando con formato incorrecto.

Ejemplos de

|_+_|

Este comando regresa 1 por falso, porque no tiene argumentos para probar. (Ver notas arriba para saber como prueba se comporta con varios números de argumentos.) Esto es bueno, porque la única vez prueba debe ejecutarse sin argumentos es cuando algo ha salido mal en su script o comando.

Para confirmar eso prueba devuelto falso, comprobaremos el valor de la variable de shell especial ? , que contiene el estado de salida del comando anterior ejecutado.

|_+_| |_+_|

Aqui hay algunos ejemplos mas.

|_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_|

df - Ver espacio en disco usado y disponible.
libre - Ver memoria usada y disponible.