1

Onderwerp: quotes, backticks, double quotes... help scripting!

Hoi,

ik probeer gewoon voor de fun wat scripting los te laten op een logfile.
Hierin staat oa:

 Jul 29 18:44:19 shuttle kernel: iptables: RU-Country-Drop: IN=eth0 OUT= MAC=00xxxxx etc 

Als ik daarop via de CL de volgende regel op loslaat, gaat dat goed:

 grep -i "`date +'%b %d' -d yesterday`" /tmp/messages | grep RU | wc -l 

Dit levert netjes het aantal keren dat gisteren "RU" in dat file stond.

Nou wil ik dat in een script stoppen, dat bovenstaande regel in een variable A duwt:

 
A= ?? grep -i "`date +'%b %d' -d yesterday`" /tmp/messages | grep RU | wc -l ??
echo $A
 

En daar gaat het fout; afhankelijk van wat ik ook op de plek van de ?? zet aan backticks, quotes, doublequotes, ik kom er niet uit. Wordt altijd gek van die kleine prutsels; kan  nooit onthouden wanneer welke te onthouden. Wie kan me helpen...?

dank

2

Re: quotes, backticks, double quotes... help scripting!

 
A= ?? grep -i "`date +'%b %d' -d yesterday`" /tmp/messages | grep RU | wc -l ??
echo $A
 

Je wilt een backtick-constructie binnen een backtick-constructie toepassen. Of dat goed gaat cq ondersteund wordt vraag ik me af

Ik zou het in twee stappen doen

 
datum=`date +'%b %d' -d yesterday`
A=`grep -i "$datum" /var/log/messages | grep RU | wc -l `
echo $A
 

Maar ik ben niet zo'n shell-scripter. Dus wellicht zijn er betere mogelijkheden

Old programmers never die
They just jump to a new address

Re: quotes, backticks, double quotes... help scripting!

Eigenlijk zijn de backticks afgeraden om te gebruiken, maar het werkt allemaal nog probleemloos. De backticks zijn vervangen door $(hier je commando). Ik zou het dus zo oplossen:

#!/bin/bash

A=$(grep -i "`date +'%b %d' -d yesterday`" /tmp/messages | grep RU | wc -l)

Ongetest, maar ik weet vrij zeker dat het probleemloos werkt smile.

Laptop: Core 2 Duo T7600. 200 GB (RAID0) voor Windows 7 Professional (Toshiba Qosmio G30-126)
Netbook: Atom N270, 2 GB RAM, 20 GB voor Ubuntu 10.04 (Asus Eee 901)
Desktop: Core 2 Duo E6600 @ 3,3 Ghz, 8 GB RAM,  3 TB (RAID0+RAID6) voor Gentoo, 15 GB voor SUSE 11.1, 1 TB voor Windows 7 Pro 64 bit Dutch (zelfbouw)
Server: 2x Pentium 3 Tualatin 1,13 Ghz, 1 GB RAM, 232 GB (RAID1) voor Gentoo (zelfbouw)

4

Re: quotes, backticks, double quotes... help scripting!

Zit nu op mn werk, heb alleen een DSL in QEMU tot mn beschikking.
Kernel 2.4
Bash version 2.05

Misschien niet de juiste omgeving om jullie suggesties op te testen...  ;-)
Vanavond maar ff verder kijken, vooralsnog dank!

5

Re: quotes, backticks, double quotes... help scripting!

Ik doe dan meestal

A=`blaat |blaat `

Nu ja... dan zonder dat geblaat he

Pascal's Blobfree Homepage
Een dag geen NedLinux is een dag niet geleefd

6

Re: quotes, backticks, double quotes... help scripting!

Ook je testbestand voorzien van data als "Jun 29" ipv "Jul 29" helpt niet om de resultaten te zien die je verwacht...
Ik ben eruit, dank voor de hulp!

Re: quotes, backticks, double quotes... help scripting!

en dan zou ik het op de volgende manier doen smile

A=$(agrep -c `date +'%b %d' -d yesterday`;RU" /tmp/messages )

en op onderstaande manier als ik geen agrep zou hebben

A=$(grep "`date +'%b %d' -d yesterday`" /tmp/messages | grep -c RU )

8

Re: quotes, backticks, double quotes... help scripting!

Gelukt.

Gisteren, Jul 29 zijn er 69 connecties uit Rusland geblokt
Gisteren, Jul 29 zijn er 17 connecties uit China geblokt
Gisteren, Jul 29 zijn er 13 connecties uit Taiwan geblokt

overigens sorry voor verkeerde groep...

9

Re: quotes, backticks, double quotes... help scripting!

En toen had logrotate zn werk gedaan:

Gisteren, Aug 01 zijn er 0 connecties uit Rusland geblokt
Gisteren, Aug 01 zijn er 0 connecties uit China geblokt
Gisteren, Aug 01 zijn er 0 connecties uit Taiwan geblokt 

eerst maar effe messages en messages.1 catten ofzo... Ik blijf bash toch de leukste game onder linux vinden... ;-)