4 votos

Bash - supresión de la salida a STDOUT

He escrito un guión para fresco macOS instala instala el Homebrew, casco, y un montón de aplicaciones que me gusta, junto con la creación de un .vimrc archivo.

Gracias a una respuesta por daniel Azuelos (encuentra aquí: la Mejor manera de comprobar en bash if Herramientas de Línea de Comandos están instalados?), una parte de la secuencia de comandos, se comprueba si el Xcode de línea de comandos-tools está instalado.

Cuando en la línea de comandos de las herramientas no están instalados, este error se muestra al usuario:

xcode-select: error: unable to get active developer directory, use `sudo xcode-select --switch path/to/Xcode.app` to set one (or see `man xcode-select`)

Estoy esperando que alguien me puede ayudar a suprimir esta salida.

La función que se ejecutó a hacer en la línea de comandos de las herramientas de verificación es:

function check_clt() {
    if type xcode-select >&- && xpath=$( xcode-select --print-path ) && test -d "${xpath}" && test -x "${xpath}" ; then
        echo ""
        echo "The required Xcode command-line-tools are already installed! Moving on!"
        sleep 3
    else
        instructions
        sleep 45
        xcode-select --install
    fi
}

Creo que puedo usar 2 > /dev/null a suprimir el error, pero no estoy seguro de que en la función donde debe ir? ¿ Lo he puesto antes de cada && en la declaración de si, pero el mensaje de error todavía parecía.

El uso de Nimesh la sugerencia, he editado la función:

function check_clt() {
if type xcode-select 2>/dev/null >&- && xpath=$( xcode-select --print-path ) 2>/dev/null && test -d "${xpath}" 2>/dev/null && test -x "${xpath}" 2>/dev/null ; then
    echo ""
    echo "The required Xcode command-line-tools are already installed! Moving on!"
    sleep 3
else
    instructions 2>/dev/null
    sleep 45
    xcode-select --install
fi

}

Ejecuta la secuencia de comandos aún se produce el error para el usuario:

Last login: Tue Sep  4 20:40:13 on ttys000
vimusrs-Mac:~ vimusr$ cd Desktop/
vimusrs-Mac:Desktop vimusr$ chmod +x mai.sh 
vimusrs-Mac:Desktop vimusr$ ./mai.sh 
xcode-select: error: unable to get active developer directory, use `sudo xcode-select --switch path/to/Xcode.app` to set one (or see `man xcode-select`)

1voto

vim_usr Puntos 131

Resulta la línea en la declaración de la función original era el problema. Además, una vez que el mensaje de error suprimido, noté que había un innecesario stdout del mensaje, así que decidí suprimir que así.

Fui capaz de suprimir los mensajes de stderror y stdout al cambiar la función a los siguientes:

0voto

Nimesh Neema Puntos 69

Modificar el script de bash lo siguiente:

Redirigir el error estándar (STDERR) a donde un comando puede tirar error. Tenga en cuenta que si el se compone de varios comandos, anexar `` antes de cada invocación del comando.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X