2009-10-05 4 views
4

Je dois me rappeler de participer à une réunion hebdomadaire. Le problème avec l'outil de rappel standard de mon entreprise est que lorsqu'il fonctionne sous Wine, il apparaît sur un bureau virtuel hors écran.Pouvez-vous écrire un rappel hebdomadaire simple en utilisant un script bash/sh quine?

Je pensais qu'il serait intéressant de voir si je pouvais arriver avec une commande "at" qui ouvre une fenêtre de rappel, puis se re-soumet pour la semaine suivante. Je sais que je pourrais utiliser cron ou une application de réveil, mais cela a piqué ma curiosité.

La version single shot serait:

echo "DISPLAY=$DISPLAY zenity --title='Weekly Meeting' --text='Time for the weekly meeting' --info" | at 0955 NEXT Monday 

Quelqu'un peut-il venir avec une commande appropriée quine -like, chaque fois qu'il est exécuté, il soumettra à nouveau plus la même commande la semaine suivante dans un cycle répété?

+0

@Veedrac, il y a * beaucoup * de points à des balises comme "fun" - filtres d'exclusion. Si de telles choses sont étiquetées, les gens qui ne veulent pas voir des choses sans valeur pratique peuvent, bien, ne pas les voir. –

+0

@CharlesDuffy Y a-t-il un message Meta à ce propos? J'avais l'impression que les méta-tags sont indésirables. Par exemple: //blog.stackoverflow.com/2010/08/the-death-of-meta-tags/ – Veedrac

+0

Pourrait bien être; Je devrais regarder. Parlant comme quelqu'un qui a plutôt beaucoup de méta-tags sur leur liste "ignorer", je suis déçu de leur mort. –

Répondre

1

pour cette solution:

export reminder='"DISPLAY=$DISPLAY zenity --title='\''Weekly Meeting'\'' --text='\''Time for the weekly meeting'\'' --info" | at 0955 NEXT Monday'; echo $reminder | at 0955 NEXT Monday 

Changer les at commandes de dire at now + 1 minute pour les tests. $DISPLAY sera défini lorsque la commande est entrée et peut ne pas être correct au moment où le travail s'exécute, mais c'est le même comportement que la commande dans votre question.

+0

Cela ne fonctionne pas: ce qu'il exécute lundi prochain est une autre commande "at" pour exécuter zenity le lundi suivant. –

+0

Oups, j'ai oublié de sortir un 'echo' supplémentaire. Essayez la version modifiée. –

0

Essayez avec un fichier:

$ cat /tmp/quine_file 
DISPLAY=:0.0 zenity --title='Weekly Meeting' --text='Time for the weekly meeting' --info; 
at '0955 NEXT monday' </tmp/quine_file; 

$ at '0955 NEXT monday' </tmp/quine_file 

De cette façon, chaque fois que le travail est exécuté, un autre est prévu pour lundi prochain.

+0

C'est ce que j'ai fait à la fin. Mais j'aimerais quand même essayer d'obtenir une solution sans utiliser un tel fichier. –

0

Je suis probablement tricher, mais vous pouvez profiter du fait que at conserve la valeur de la plupart des variables d'environnement (non $DISPLAY cependant, ni $DISP il semble):

export FOO=$DISPLAY CMD='DISPLAY=$FOO xmessage "hi there"; 
echo "$CMD" | at now + 1 minutes' 
eval "$CMD" 

I utilisé xmessage et une minute parce que je les avais, mais bien sûr, vous pouvez l'adapter à vos besoins.

+0

Cela fonctionne deux fois. Mais il ne se rééchelonne pas. –

+0

Je suppose que votre 'at' doit différer de la mienne en quelque sorte. Est-ce que l'ajout de 'exporter FOO CMD;' avant 'echo' résout le problème? –

0

Désolé de gâcher le plaisir, mais ... un travail cron n'aurait-il pas plus de sens?

+0

-1: Avez-vous vu la balise "fun"? Je sais comment utiliser un travail cron donc je n'ai pas besoin de demander sur SO à ce sujet. Ce que je ne sais pas, c'est comment faire un script shell quine-like. D'où cette question. –

Questions connexes