Poproś, aby polecenie at zwróciło identyfikator zadania właśnie przesłanego

3

Czy jest możliwe, aby polecenie at zwróciło w jakiś sposób identyfikator zadania, który właśnie przesłał, gdy jest używany ze skryptu? (coś w rodzaju $? pobiera ostatni kod wyjścia lub $$ / $! pobiera PID właśnie wykonanego polecenia).

yannisf
źródło
Kiedy uruchamiam echo "touch foo" | at now, dostaję np. job 3 at Thu Dec 15 17:14:52 2011Jako wynik - ty nie? Podobnie w skrypcie, zapisuje na standardowe wyjście, skąd można je przeanalizować.
Daniel Beck

Odpowiedzi:

2

Zakładając, że zadanie, które chcesz uruchomić, znajduje się w pliku o nazwie test.sh, następujący identyfikator zwróci identyfikator:

 $ at now -f test.sh 2>&1 | awk '/job/ {print $2}'
 8

Do 2>&1przekierowania stderr do stdout, dzięki czemu można go manipulować. Te awkpowroty drugie pole w wierszu, który ma słowo „praca” w tym, co jest wiersz, który zawiera identyfikator zadania.

Więc zamień to w zmienną, możesz:

$ TEST=`at now -f test.sh 2>&1 | awk '/job/ {print $2}'`
$ echo $TEST
9
Paweł
źródło