Un archivo binario interesante en los sistemas Unix
- En los sistemas Unix existen archivos binarios cuyos nombres son un solo símbolo.
- Al ejecutar el comando
/bin/[se puede comprobar que existe un programa llamado[ [ytestapuntan al mismo archivo binario, y ambos comandos realizan en realidad la misma función.
Uso del programa test y de [
- El programa
testse usa para evaluar expresiones en el shell. - Se utiliza para comparar cadenas, comparar números y verificar condiciones de archivos.
testrecibe argumentos, evalúa la expresión y devuelve 0 si es verdadera y 1 si es falsa.
Por qué existen los dos comandos
- No está claro por qué existen los dos comandos,
testy[, aunque se supone que fue para mejorar la legibilidad. - Usar el comando
[permite expresar condicionales de forma más limpia que contest. - Al usar
[, el último argumento del comando debe terminar con].
Diferencia entre comandos integrados y binarios externos
- Como
testy[se usan con frecuencia en scripts de shell, están implementados como comandos integrados en la mayoría de los shells. - El comportamiento puede ser distinto entre el comando integrado y el binario externo, y también puede variar según el shell.
Uso de [[ y sus diferencias
[[es una extensión de Bash que sustituye el uso de[.[[, como comando integrado, puede cambiar las reglas básicas del lenguaje dentro de una expresión.[[puede producir resultados distintos al tratar los patrones glob en comparaciones de cadenas como literales.
Qué elegir al escribir scripts de shell
- Para escribir scripts de shell portables, conviene usar
[. - Si vas a escribir scripts exclusivos para Bash,
[[ofrece más funciones.
Combinación de expresiones del shell y expresiones de test
- El shell tiene sus propias expresiones mediante los operadores
!,&&,||. - Las expresiones de
testy las del shell pueden combinarse en un solo comando.
Opinión de GN⁺
Lo más importante de este texto es que en los sistemas Unix [ y test existen como dos comandos distintos que cumplen la misma función, y se supone que esto busca mejorar la legibilidad y la eficiencia de los scripts de shell. Esta información puede ser útil para ingenieros de software principiantes al escribir o entender scripts de shell, y también ayuda a comprender cómo funcionan los scripts de shell y cuáles son las diferencias entre distintos shells. Lo interesante de este texto es que muestra cómo las herramientas básicas de los scripts de shell pueden usarse de varias formas, y deja ver bien la complejidad y flexibilidad de la programación en shell.
1 comentarios
Comentarios de Hacker News
Agradecimiento del autor original y sugerencia de corregir el título
Historia del comando "test" del shell Bourne y preferencia personal
Ejemplo de condicionales sin usar un bloque
ifCómo combinar bloques
ifcon comandos normalesReflexión sobre usar operadores lógicos dentro del comando
testVentajas de usar el comando "test" y la comodidad de "man test"
Precaución con el comportamiento de un solo argumento en
[ytestDiferencia entre
/bin/[y/bin/testen Linux y NetBSDCompartir enlaces a un análisis más profundo de
test/[/[[y a un blog sobre rarezas del shellSeñala que
[[es exclusivo de bash y recomienda usarlo si seguro se usará bashConfusión sobre la idea de que
[no forma parte del lenguaje de scripting de bashOpinión fuerte sobre el shell y rechazo al uso de
[