les opérations suivantes:
#!/bin/bash
if sudo profiles -P | egrep -q ': com.meraki.sm.mdm$'; then
exit 0
else
exit 1
fi
- sortie de
sudo profiles -P
(notez que profiles
exige toujours les privilèges root) est envoyé à egrep
par un tuyau (|
); les deux commandes forment un pipeline .
egrep -q ': com.meraki.sm.mdm$'
recherches par la sortie de profile
: Option
-q
(calme) ne produit aucune sortie et les signaux simplement par son code de sortie si une correspondance a été trouvée (0
) ou non (1
).
': com.meraki.sm.mdm$'
est une expression régulière qui correspond à la chaîne 'com.meraki.sm.mdm' trouvée à la fin de la ligne ($
), précédée de ':'. Grep -E` - il active le support étendu expressions régulières - pas strictement nécessaire ici, mais généralement conseillé pour moins de surprises).
- La déclaration
if
true si évalue le rendement de pipeline code de sortie 0
et false autrement (non nulle). Notez que par défaut, il s'agit de la dernière commande dans le pipeline dont le code de sortie détermine le code de sortie global du pipeline.
Soit dit en passant, si tout ce que vous vouliez faire est d'avoir votre script reflète si la chaîne a été trouvée ou non (par exemple, si vous ne avez pas besoin de prendre d'autres mesures dans le script), ce qui suit suffirait:
sudo profiles -P | egrep -q ': com.meraki.sm.mdm$'
exit $? # Special variable `$?` contains the most recent command's exit code
Si vous voulez quitter votre script juste après en cas de défaillance seulement:
sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' || exit
# Alternative, with error message:
sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' ||
{ ec=$?; echo 'Profile not installed.' >&2; exit $ec; }
A l'inverse, si l'on voulait sortir juste après, en cas de succès :
sudo profiles -P | egrep -q ': com.meraki.sm.mdm$' && exit
Merci beaucoup. Cela fonctionnera parfaitement. Je vais devoir échanger le code de sortie pour le but pour lequel je l'utilise, mais c'est parfait. Merci!Maintenant, pour résoudre le problème Curl>: D – WardsParadox
@WardsParadox: Heureux d'entendre que ça fonctionne pour vous; mon plaisir. – mklement0
Juste un petit mot, mais s'il est utilisé dans une situation d'installateur, a-t-il encore besoin du sudo? Étant donné que l'invite des installateurs (enfin tous les miens que je construis) ont besoin de privilèges administratifs pour les permissions root, cela ne devrait pas avoir besoin de sudo, n'est-ce pas? – WardsParadox