0 votos

softwareupdate grep script Ayuda

Usando High Sierra tengo esto configurado como un cronjob para que se ejecute una vez al día.

He estado luchando para averiguar cómo obtener grep para encontrar la cadena en la salida. Soy bastante nuevo en las secuencias de comandos de bash.

Se agradece cualquier consejo sobre dónde me he equivocado y los ejemplos.

#!/bin/bash

printf '\e[2t'

check=$(softwareupdate -l)

sleep 5

echo $check

if [ fgrep "No new software" <<< $check ]
then
say "Peter, You are up to date"
else
say "Peter, you have updates"
fi

1voto

softwareupdate imprime No new software available. en stderr , no en stdout por lo que nunca se asignará a check . La solución rápida es ejecutar

check=$(softwareupdate -l 2>&1)

Esto redirigirá stderr (descriptor de archivo 2) a stdout (descriptor de archivo 1).

También su if es errónea, la [ es un comando, no sólo una sintaxis. Así que simplemente puedes ejecutar

if fgrep "No new software" <<< $check; then

por esto.

Pero si no necesitas el valor de $check más adelante puedes poner todo esto en una línea y simplemente ejecutar

if softwareupdate -l 2>&1 | fgrep -q "No new software"; then

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