¿Qué es / usr / bin / [y cómo lo uso?


26

Estaba buscando en coreutils y encontré esto como uno de los archivos incluidos como parte de coreutils: /usr/bin/[. ¿Qué es [y qué hace?

Es un ejecutable. Simplemente no sé qué hace ni cómo usarlo.

$ file / usr / bin / [
/ usr / bin / [: ELF ejecutable LSB de 32 bits, Intel 80386, versión 1 (SYSV), vinculado dinámicamente (usa libs compartidas), para GNU / Linux 2.6.15, despojado

Cuando trato de ejecutarlo, creo que está predeterminado en la expansión de línea integrada de bash. En lugar de ejecutar realmente el archivo.

$ "/ usr / bin / ["
/ usr / bin / [: missing ] ']' $ /usr/bin/\[
/usr/bin/[: missing



2
man [funciona en OS X.
Daniel Beck

Respuestas:


33

Es un equivalente del comando test. (Ver info test.) Generalmente lo usa en scripts en expresiones condicionales como:

if [ -n "$1" ]; then
    echo $1
fi

Se requiere el corchete de cierre para encerrar el condicional. (Bueno, parece que se requiere solo para verse mejor en el código. ¿Alguien sabe alguna otra razón práctica para ello?)


3
Tenga en cuenta que [es tanto una cáscara incorporado y un programa externo con la misma (o similar) de uso. En bash, cuando corres [o testestás invocando el incorporado.
Grawity

Es obligatorio porque si fuera opcional, la sintaxis sería ambigua en ciertas situaciones.
Random832

20

Es equivalente al testcomando.

En lugar de

if /usr/bin/test -z "$VAR"
then
    echo VAR not set
fi

Puedes usar:

if /usr/bin/[ -z "$VAR" ]
then
    echo VAR not set
fi

También se puede usar en bucles:

i=0
while [ $i -lt 10 ]
do
   echo $i
   ((i++))
done

También puedes usarlos en frases como esta:

[ -z "$VAR" ] && echo VAR not set && exit

[ -f foo.txt ] && cat foo.txt

2
buenos ejemplos de cómo usarlo. "if / usr / bin / ["
nelaaro
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.