[bash] Variabele een waarde geven en waarde geven aan case

Pagina: 1
Acties:

  • freyk
  • Registratie: September 2003
  • Laatst online: 01-02 18:54
Ik probeer een script te schrijven dat logs uit een bepaalde map word weergegeven en men daaruit een keuze kunnen maken om één van die logs te laten verwerken door awk.

maar het lukt me niet om de naam van iederelog als waarde aan een variabele te geven.
Met let en set, wil het me niet lukken.

De volgende code heb ik:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash
menunummer=0
lognummer=0
log1=0
log2=0
echo ""
echo "Welke Log wilt u verwerken??"
echo "------------------------------------------------------"
for iederelog in `ls | grep firewall`;
        do
        # Kijk in iedere logbestand en haal de start en einddatum   
    start=`head -n1 $iederelog | awk '{print $1,$2,$3}'`
    einde=`tail -n1 $iederelog | awk '{print $1,$2,$3}'`
    # Hoogmemnu nummer op
    let menunummer=menunummer+1
    # Geef menunummer, start- en einddatum weer
    echo "($menunummer) $iederelog"
        echo "start: $start"  
    echo "einde: $einde"
    # geef log1 t/m log6 de naam van een log    
    let "log1=$iederelog"
        done
echo "------------------------------------------------------"
echo "Typ een log naaer keuze in (1 t/m $menunummer): "
echo "$log1"
read keuze

case $keuze in
 1) awk -f $log1 >> teanalyseren.log ;;
 2) awk -f $log2 >> teanalyseren.log ;;
esac

Kunnen jullie me helpen?

  • sparks
  • Registratie: December 2002
  • Laatst online: 10:20
Kun je het select statement niet gebruiken?

han@ibm:/var/log> select logn in *.log
> do
> echo $logn
> done
1) boot.log 10) snmpd.log
2) convert_for_getconfig.log 11) xinetd.log
3) kdm.log 12) Xorg.0.log
4) mysqld.log 13) Xorg.1.log
5) net-snmpd.log 14) Xorg.99.log
6) nxserver.log 15) yum.log
7) rcvsftp.log 16) zmd-backend.log
8) samba.log 17) zmd-messages.log
9) SaX.log
#? 1
boot.log
#?

  • freyk
  • Registratie: September 2003
  • Laatst online: 01-02 18:54
Ja, dat werkt veel beter.
Bedankt!!!

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
menunummer=0
echo ""
echo "======================================================="
echo "= Inhoud van de volgende logjes"
echo "=======================================================" 
for iederelog in `ls *.txt | grep firewall`; do
    # Kijk in iedere logbestand en haal de start en einddatum   
    startlog=`head -n1 $iederelog | gawk.exe '{print $1,$2,$3}'`
    eindelog=`tail -n1 $iederelog | gawk.exe '{print $1,$2,$3}'`
    # Hoogmemnu nummer op
    let menunummer=menunummer+1
    # Geef menunummer, start- en einddatum weer
    echo "=" 
    echo "= Naam: $iederelog"
    echo "= start: $startlog"  
    echo "= einde: $eindelog"
    echo "=======================================================" 
done
echo ""
echo "Welke log wilt u verwerken tot een rapportage? 1 t/m $menunummer "
select logn in `ls *.txt | grep firewall`; do
 awk -f awkscriptje.awk $logn >> teverwerkenlogje.txt
 exit
done