/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
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
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408939
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste