( tovis | 2012. 03. 08., cs – 01:14 )

Na ez már úgy tűnik, működik!


#! /bin/sh
#
# Notify local user by mail using local MTA
#
#
NOW_DATE=`date +'%Y %m %d %H'`
NOW_YRS=`echo $NOW_DATE | cut -b 1-4`
NOW_MON=`echo $NOW_DATE | cut -b 6-7`
NOW_DAY=`echo $NOW_DATE | cut -b 9-10`
NOW_HRS=`echo $NOW_DATE | cut -b 12-13`
# /bin/echo -e "NOW:\t-$NOW_YRS-$NOW_MON-$NOW_DAY-$NOW_HRS-"
###
ROW_COUNT=0
grep -v '^#' $1 | while read ROW
do
  ROW_COUNT=`expr $ROW_COUNT + 1`
  echo "$ROW_COUNT:\t$ROW"
  YRS=`echo "$ROW" | awk '{print $1}'`
  MON=`echo "$ROW" | awk '{print $2}'`
  DAY=`echo "$ROW" | awk '{print $3}'`
  HRS=`echo "$ROW" | awk '{print $4}'`
  ADDR=`echo "$ROW" | awk '{print $5}'`
  #SUBJECT=`echo "$ROW" | cut --delimiter='"' -f 2`
  #TEXT=`echo "$ROW" | cut --delimiter='"' -f 4`
  SUBJECT=`echo "$ROW" | awk 'BEGIN {FS="[\t\"]"} {print $2}'`
  TEXT=`echo "$ROW" | awk 'BEGIN {FS="[\t\"]"} {print $4}'`
  /bin/echo -e "$ROW_COUNT:\t-$YRS-$MON-$DAY-$HRS-$ADDR-$SUBJECT-$TEXT-"
  echo "$TEXT" | /usr/bin/mail -s "$SUBJECT" "$ADDR"
done

A SUBJECT és a TEXT kibontása, akár awk akár cut működik. Azt nem igazán értem, hogy miért nem 1 és 2 mező, hanem 2 és 4 es. Ha valaki tudja súgjon.
Mondjuk, ezzel az erővel akár a dátum időt is kivehetem cut segítségével, majd meglátom (gondolom a cut kevésbé erőforrás igényes mint az awk, másképp nincs jelentősége.
Kérlek fussátok át, hátha találtok még valami javítani valót.
Még van olyan hátsó gondolatom, hogy a TEXT mező lehetne (vagylagosan) fájl referencia is (azaz a szöveget ha hosszú lehetne egy másik fájlból venni) de már ez is nagyon jó lesz. Így utólag nem is olyan nehéz de jó sok időt elvitt.

* Én egy indián vagyok. Minden indián hazudik.