The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Problem For Loop The Observer Shell programmering og Skripting 2 05-28-2008 03:43
loop problem maskot Shell programmering og Skripting 1 05-25-2007 05:10
Problemet med for loop / sed? chiru_h Shell programmering og Skripting 2 08-27-2006 12:55
loop Problem dhananjaysk Shell programmering og Skripting 3 03-31-2006 02:05
Problemet med mens loop mridula High Level Programmering 1 12-11-2005 11:44

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 01-25-2008
namishtiwari namishtiwari is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: Aug 2007
Beliggenhet: Bangalore
Innlegg: 377
for loop problem

Hei,
Jeg har en katalog kalt logger hvor jeg har loggfiler.

Jeg må ta på filen før du sletter den.

jeg gjør sånn
filestodelete \u003d "*. log * * log *"

for filer i $ filestodelete
gjøre
touch $ filer $ filer. $ (date +% a)
rm-f $ filestodelete
ferdig

touch ikke fungerer her, betyr at det ikke berører filen før du sletter den.
De hjelpe meg i dette.

Sist endret av namishtiwari; 01-25-2008 på 09:32..
  #2 (permalink)  
Old 01-25-2008
V3l0 V3l0 is offline
Registrert bruker
  
 

Bli Dato: november 2007
Bosted: Belgia og Frankrike
Innlegg: 70
Hallo,

Først når du velger "* log *" du ikke har å velge "*. log *" beacause de er allerede i første valg!

Sekund, hvorfor "berøre" filen før du sletter den?

Tredje skriptet blir runnig med "ikke fjerne filen xxx" beacause av kommandoen "rm-f $ filestodelete" som vil slette alle filene valgte "for filer i (* log * | *. log *)"

Så jeg foreslår du skriptet:

Code:
list=$(ls *log*)

for file in $list
do
    cp $file $file.$(date +%a)
    rm -f $file
done

  #3 (permalink)  
Old 01-25-2008
namishtiwari namishtiwari is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: Aug 2007
Beliggenhet: Bangalore
Innlegg: 377
Sitat:
Originally Posted by V3l0 View Post
Hallo,

Først når du velger "* log *" du ikke har å velge "*. log *" beacause de er allerede i første valg!

Sekund, hvorfor "berøre" filen før du sletter den?

Tredje skriptet blir runnig med "ikke fjerne filen xxx" beacause av kommandoen "rm-f $ filestodelete" som vil slette alle filene valgte "for filer i (* log * | *. log *)"

Så jeg foreslår du skriptet:

Code:
list=$(ls *log*)

for file in $list
do
    cp $file $file.$(date +%a)
    rm -f $file
done
du ga meg god suggestions.Thanks ..

Jeg må berøres fil fordi vi har noen prosesser som kjører som må plukke det tomme filen slik at vi må starte aaplication nytt hvis jeg slettet filen uten å berøre it.cp vil unødvendig øke størrelsen.
  #4 (permalink)  
Old 01-25-2008
danmero danmero is offline Forum Advisor  
  
 

Bli Dato: november 2007
Beliggenhet: 45.48-73.63
Innlegg: 1445
Sitat:
Originally Posted by namishtiwari View Post

Code:
list=$(ls *log*)

for file in $list
do
    cp $file $file.$(date +%a)
    rm -f $file
done

Jeg må berøres fil fordi vi har noen prosesser som kjører som må plukke det tomme filen slik at vi må starte aaplication nytt hvis jeg slettet filen uten å berøre it.cp vil unødvendig øke størrelsen.
Hva med å flytte filen og berøre en ny:

Code:
for file in `ls *log*`
do
    mv $file $file.`date +%a` && touch $file || echo "Can not backup $file";
done

  #5 (permalink)  
Old 01-25-2008
namishtiwari namishtiwari is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: Aug 2007
Beliggenhet: Bangalore
Innlegg: 377
Takk for alle svar.

men jeg har et problem her - mine skriptet som dette --


Code:
BackupLocation="$OPTARG"
                if [[ $BackupLocation != *backup ]]; then
                        echo "Appending backup subdirectories"
                        BackupLocation=$BackupLocation/backup
                        mkdir -p $BackupLocation >/dev/null 2>&1
                        if [[ $? != 0 ]];then
                        echo "First Create The Directory And Then Take backup"
                        fi
                        cd $FileLocation
                        pwd
                        cp -R $FilesToDelete $BackupLocation
                       list=$(ls *log*)
                        for files in $list
                        do
                             rm -f $files
                          touch $files.$(date +%a)
                                                 done
                else
                        mkdir -p $BackupLocation >/dev/null 2>&1
                        cp -R $FilesToDelete $BackupLocation
                        for files in $list
                        do
                          rm -f $files
                          touch $files.$(date +%a)
                          
                        done
                if [[ ! -d $BackupLocation ]]; then
                echo "Unable to make backup directory: $BackupLocation"
                        if [[ $IsCronJob -eq 1 ]]; then
                          SendMiddleTierCleanMail "Middletierclean error message" $mt_clean_errfile
                        fi

her vil det touch filen igjen og igjen og legger dagen etter filnavnet igjen like->
ansrpt26529.log.Fri.Fri.Fri.Fri
men jeg vil ikke at det sånn.
Jeg trenger å ta sikkerhetskopi av file.then touch den og slette filen.
den mønstersamsvar for filene du vil slette er
listen \u003d $ (ls * log *)
det er å velge alle filene ansrpt26529.log.Fri.Fri.Fri.Fri som dette men jeg vil ikke at det på denne måten kan det være bare ansrpt26529.log.Fri.
mønstersamsvar være annerledes her så gi meg noen forslag til å løse dette problemet.

Sist endret av namishtiwari; 01-25-2008 på 12:41..
  #6 (permalink)  
Old 01-25-2008
danmero danmero is offline Forum Advisor  
  
 

Bli Dato: november 2007
Beliggenhet: 45.48-73.63
Innlegg: 1445
Hva med

Code:
                       
list=$(ls *log.???)
for files in $list
do
    rm -f $files
    touch `echo $files | sed 's [^.]*$  '``date +%a`
done


Sist endret av danmero; 01-25-2008 på 01:05..
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 05:57.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0