0 votes

softwareupdate grep script Aide

En utilisant High Sierra, j'ai configuré cette tâche comme un cronjob à exécuter une fois par jour.

J'ai eu du mal à trouver comment faire en sorte que grep trouve la chaîne dans la sortie. Je suis assez nouveau dans le domaine des scripts bash.

Tous les conseils sur les erreurs que j'ai commises et les exemples sont les bienvenus !

#!/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

nohillside Points 82672

softwareupdate imprime No new software available. sur stderr et non sur stdout donc il ne sera jamais assigné à check . La solution rapide est d'exécuter

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

Cela redirigera stderr (descripteur de fichier 2) vers stdout (descripteur de fichier 1).

De même, votre if est erronée, la [ est une commande, pas seulement une syntaxe. Vous pouvez donc simplement exécuter

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

pour ça.

Mais si vous n'avez pas besoin de la valeur de $check Plus tard, tu pourras mettre tout ça sur une seule ligne et juste exécuter

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X