bash és bc (?) [megoldva]

sziasztok.
abszolut nem tanulok és nem is tanultam sosem programozást, illetve semmi ehhez hasonlót.
saját magam sórakoztatom néha ezzel.
most egy olyan próblémába ütköztem, ami elég triviális, de mégsem tudom megoldani.
a lényeg az, hogy logokat különböző fájlokra bontok le, kulcsszó alapján. ezzel nincs is semmi probléma.
viszont szeretném, ha x idő múltán a régebbi fájlok törlődnének. ezt nem tudom megoldani.
többféleképpen próbálkoztam, de nem jártam eredménnyel.
az alaphelyzet:


#!/bin/bash

set -e

DATE_LOG=`date +%Y%m%d`

# sshd log
cat /var/log/auth.log | grep sshd 2>&1 > /home/sumo/sec/log/sshd_auth_${DATE_LOG}.log

a legutolsó próbálkozásom ez volt:

DATE_RM=`expr ${DATE_LOG} - 7`

így megkapom ugyan eredménynek $DATE_LOG - 7 -et helyesen (legalábbis az echo $DATE_RM kiírja az értéket), de a $DATE_RM változót mégsem tudom használni. egyszerűen létre szerettem volna hozni próbaképp egy fájlt így:

touch /home/sumo/sec/log/teszt_${DATE_RM}.txt

de nem ment.
legyetek szívesek elindítani a helyes irányba:)
előre is köszi: sumo

Hozzászólások

Az új szabvány szerint a visszafeléaposztrofok (AltGr+7) helyett a $(KIFEJEZES)-et használjuk. Egyébként nem kell a ${} a DATE_RM köré:


DATE_RM=$(expr $DATE_LOG - 7)

____________________________________________________________
Slackware 12/current - linux-2.6.23.12-olorin - KDE 3.5.8

a test és a [ is beépített parancs, pedig szerintem - nem emlékszem biztosan - a 2.05b-ben még nem volt az. Ha
deprecated, akkor miért builtin? Minden rendszeren ott van a /bin/ vagy a /usr/bin/ könyvtárban...

Ez nem is a bash hivatalos oldala, nem a man page... Valaki szerint deprecated. Na és?

Szia!

Nekem ment úgy, ahogyan Te írtad.

Egy lehetseges megoldas...


# letrehozza a sajat fajlodat
grep "sshd" /var/log/auth.log >"/home/sumo/sec/log/sshd_auth_$(date +%Y%m%d).log"

# torli az 5 napnal regebbi fajlokat
find /home/sumo/sec/log -name "sshd_auth_*" -mtime +5 -exec rm {} \;

--
maszili

Ha elfogadsz tolem egy jotanacsot...

A datum egy komplikalt adat! :) Ha szeretnel egy korabbi vagy kesobbi datum ertekevel szamolni akkor azt sohasem ugy ahogy fentebb probaltad.

Mert mi van akkor ha...

20080103 elott 5 nappal?

echo $((20080103-5))

20080098 = 2008-00-98 ??? nulladik ho 98-adika?

Itt egy pelda hogyan vonjunk ki egymasbol helyesen ket datumot...


echo $( date +%d -d @$(( $(date +%s -d 2008-01-08) - $(date +%s -d 2008-01-03) )) )

ez egyben pelda arra is, hogy erdemesebb a $(parancs) megoldast hasznalni mert igy egymasba agyazhatok a parancsok kimenetei.

--
maszili

Sziasztok

Ezt lehet szebben csinálni?
AFA="127"
echo "$(echo "scale=0; 1000 * $AFA/100" | bc) Ft"
1270 Ft

Egyébként:
AFA="1.27"
echo "$(echo "scale=0; 1000 * $AFA" | bc) Ft"

1270.00 Ft
Gondolom az 1.27 miatt lesz két tizedesjegy.
Ezen a scale=0 sem segít.
Ilyenkor nem lehet lebeszélni a .00 -ról?