On 2013-03-05 11:17, Paul Mather wrote: > On Mar 5, 2013, at 9:54 AM, Dan Langille <d...@langille.org> wrote: > >> On 2013-03-04 04:42, Konstantin Khomoutov wrote: >>> On Mon, 4 Mar 2013 08:45:05 +0100 >>> Geert Stappers <geert.stapp...@vanadgroup.com> wrote: >>> >>> [...] >>>> Thank you for the tip. I want to share another. >>>> It is about canceling multiple jobs. Execute from shell >>>> >>>> for i in {17..21} ; do echo cancel yes jobid=404${i} | bconsole >>>> ; >>>> done >>>> >>>> Five jobs, 40417-40421, will be canceled. >>> >>> A minor nitpick: the construct >>> >>> for i in {17..21}; do ... >>> >>> is a bashism [1], so it won't work in any POSIX shell. >> >> A good point! I tried the above on FreeBSD: >> >> $ cat test.sh >> #!/bin/sh >> >> for i in {17..21} ; do echo cancel yes jobid=404${i} ; done >> >> >> [dan@bast:~/bin] $ ./sh test.sh >> cancel yes jobid=404{17..21} >> [dan@bast:~/bin] $ >> >>> >>> A portable way to do the same is to use the `seq` program >>> >>> for i in `seq 17 21`; do ... >>> >>> or to maintain an explicit counter: >>> >>> i=17 >>> while [ $i -le 21 ]; do ...; i=$(($i+1)); done >> >> Then I tried this approach but didn't find seq at all. I tried sh, >> csh, and tcsh. > > > Seq appeared in FreeBSD 9, so if you tried it in earlier versions > that's probably why you didn't find it.
Confirmed. I was using FreeBSD 8.2 there. I just tried a 9.1 machine: $ seq 1 3 1 2 3 $ And from man seq: HISTORY The seq command first appeared in Plan 9 from Bell Labs. A seq command appeared in NetBSD 3.0, and ported to FreeBSD 9.0. This command was based on the command of the same name in Plan 9 from Bell Labs and the GNU core utilities. The GNU seq command first appeared in the 1.13 shell utilities release. > Using seq, you might have to use "-f %02g" to get two-digit sequences > with leading zeros (or "-f %0Ng" to get N-digit sequences with > leading > zeros). Nice! > > >> But I know about jot. This does 5 numbers, starting at 17: >> >> $ jot 5 17 >> 17 >> 18 >> 19 >> 20 >> 21 >> >> Thus, the script becomes: >> >> $ cat test.sh >> #!/bin/sh >> >> for i in `jot 5 17` ; do echo cancel yes jobid=404${i} ; done >> >> >> $ sh ./test.sh >> cancel yes jobid=40417 >> cancel yes jobid=40418 >> cancel yes jobid=40419 >> cancel yes jobid=40420 >> cancel yes jobid=40421 > > > With jot you can shorten this even further: > > jot -w "cancel yes jobid=404%g" 5 17 > > Again, you might want to zero-pad if you are cancelling, say, jobs > 40405 to 40423: > > jot -w "cancel yes jobid=404%02g" 19 5 > > Or, better yet, just start from the job range beginning itself: > > jot -w "cancel yes jobid=%g" 19 40405 WOOT! -- Dan Langille - http://langille.org/ ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_feb _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users