/
Forside
/
Teknologi
/
Operativsystemer
/
Linux
/
Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn
*
Kodeord
*
Husk mig
Brugerservice
Kom godt i gang
Bliv medlem
Seneste indlæg
Find en bruger
Stil et spørgsmål
Skriv et tip
Fortæl en ven
Pointsystemet
Kontakt Kandu.dk
Emnevisning
Kategorier
Alfabetisk
Karriere
Interesser
Teknologi
Reklame
Top 10 brugere
Linux
#
Navn
Point
1
o.v.n.
11177
2
peque
7911
3
dk
4814
4
e.c
2359
5
Uranus
1334
6
emesen
1334
7
stone47
1307
8
linuxrules
1214
9
Octon
1100
10
BjarneD
875
Bash script - funktionskald med * i arg?
Fra :
Michael Jenner
Dato :
10-08-03 11:23
Jeg har en bash shell script-stump som jeg gerne vil have lagt over i en
funktion, desværre volder det lidt problemer.
Oprindelig script:
#!/bin/bash
FILEPATTERN="hejsa"
FILEEXT="txt"
FILEPATH="/sti/til/filer/"
CYCLEFILEMAX=9
CYCLEFILECOUNT=`ls -al -t ${FILEPATH}${FILEPATTERN}*${FILEEXT} | wc -l`
while [ $CYCLEFILECOUNT -gt $CYCLEFILEMAX ]
do
OLDFILE=`ls -t ${FILEPATH}${FILEPATTERN}*${FILEEXT} | tail -1`
# rm ${OLDFILE}
# if [ $? -neq 0 ]; then
# echo "Failed to delete ${OLDFILE}, exiting"
# exit 1
# fi
CYCLEFILECOUNT=`ls ${FILEPATH}${FILEPATTERN}*${FILEEXT} |wc -l`
echo "Deleting: ${OLDFILE}"
# Test only so drop out of loop:
CYCLEFILECOUNT=${CYCLEFILEMAX}
done
Første forsøg på at flytte det til funktion:
#!/bin/bash
FILEPATTERN="hejsa"
FILEEXT="txt"
FILEPATH="/sti/til/filer/"
CYCLEFILEMAX=9
##############################
# rotatefile filename (* wildcards allowed)
##############################
rotatefile () {
CYCLEFILECOUNT=`ls -al -t $1 | wc -l`
echo $1
echo "${CYCLEFILECOUNT} and $CYCLEFILEMAX"
while [ $CYCLEFILECOUNT -gt $CYCLEFILEMAX ]
do
OLDFILE=`ls -t "$1" | tail -1`
# rm ${OLDFILE}
# if [ $? -neq 0 ]; then
# echo "Failed to delete ${OLDFILE}, exiting"
# exit 1
# fi
CYCLEFILECOUNT=`ls "$1" |wc -l`
echo "Deleting: ${OLDFILE}"
# Test only so drop out of loop
CYCLEFILECOUNT=${CYCLEFILEMAX}
done
}
rotatefile ${FILEPATH}${FILEPATTERN}*${FILEEXT}
Desværre fanger funktionen kun 1 match - echo $1 giver kun første match
- dvs. hejsa.txt. Den fanger ikke hejsa2.txt, hejsa3.txt osv - præcis
som om * ikke var der i kaldet af funktionen. Kalder jeg det oprindelige
script istedet finder den alle filer der matcher hejsa*txt.
Hvad gør jeg galt? Løsningsforslag?
På forhånd tak
Michael
Søg
Alle emner
Teknologi
Operativsystemer
Linux
Indstillinger
Spørgsmål
Tips
Usenet
Reklame
Statistik
Spørgsmål :
177551
Tips :
31968
Nyheder :
719565
Indlæg :
6408843
Brugere :
218887
Månedens bedste
Årets bedste
Sidste års bedste
Copyright © 2000-2024 kandu.dk. Alle rettigheder forbeholdes.