/
Forside
/
Teknologi
/
Operativsystemer
/
Linux
/
Nyhedsindlæg
Login
Brugernavn
*
Kodeord
*
Husk mig
Brugerservice
Kom godt i gang
Bliv medlem
Seneste indlæg
Stil et spørgsmål
Skriv et tip
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 :
177819
Tips :
31980
Nyheder :
719565
Indlæg :
6410971
Brugere :
218912
Månedens bedste
Årets bedste
Sidste års bedste
Copyright © 2000-2026 kandu.dk. Alle rettigheder forbeholdes.