![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| mens loop inde mens loop | panknil | Shell Programmering og Scripting | 0 | 01-07-2008 12:49 PM |
| For loop | xramm | HP-UX | 3 | 10-10-2007 03:20 PM |
| Mens Loop | hemangjani | Shell Programmering og Scripting | 2 | 11-02-2006 11:01 AM |
| for løkke | munnabhai1 | Shell Programmering og Scripting | 3 | 04-06-2006 03:30 PM |
| hvordan du får den tilsvarende funktion i mens sløjfe eller løkke | trynew | Shell Programmering og Scripting | 3 | 06-17-2002 12:09 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
sh sløjfe du brug for hjælp
Hej,
Jeg har følgende script, der gør en sikkerhedskopi via cpio til en NFS mount. Problemet er, at jeg kun synes at være at få root. Jeg er ikke sikker på, hvad jeg gør forkert her, men det fungerer ikke. Følgende er hele script. Jeg har fremhævet de områder, hvor jeg tror jeg har et problem eller i det mindste er relevante, tror jeg. ![]() #! / bin / sh # # Indstil konfiguration variabler # NFSMOUNT \u003d "/ mnt /nfs« BACKUP_LOG \u003d '/ usr / local / backup_logs' EXCLUDE_FS \u003d "/ mnt /nfs« HARDWARE_LOG \u003d '/ var / adm / messages' eksport NFSMOUNT BACKUP_LOG EXCLUDE_FS HARDWARE_LOG # Få dato i MMDDÅÅ format MDY \u003d `dato +% m% d% y« hvis [! -d $ (BACKUP_LOG)-o! -w $ (BACKUP_LOG)]; derefter echo "$ (BACKUP_LOG) eksisterer ikke eller kan ikke skrive" exit 1 fi echo "# # # Backup begyndende ved` dato `" # LOG_START er antallet af linjer i vores hardware log # Når sikkerhedskopieringen begyndte. Vi er ikke med noget # Der er indtrådt før nu. LOG_START \u003d `wc-l <$ (HARDWARE_LOG)` # Striben førende og efterfølgende mellemrum LOG_START \u003d `expr $ (LOG_START)` BACKUPTYPE \u003d "cpio" # Få en liste med UNIX-filsystemer til at bakke op MOUNTEDSYSTEMS \u003d `df-F UFS | cut-d ''-f1 | sortere« # Fjern udelukket filsystemer fra liste til FS i $ MOUNTEDSYSTEMS gøre case "$ (EXCLUDE_FS)" i # Hvis sin udelukkes ikke gør noget * "$ (FS) "*);; # Tilføj adgang til listen *) Case "$ (filsystemer)" i # Listen er tom, så er dette den første indrejse '') Filsystemer \u003d "$ (FS)"; # List indeholder poster så append til liste *) Filsystemer \u003d "$ (filsystemer) $ (FS)"; ESAC;; ESAC gjort cd / hvis [ "$ BACKUPTYPE" \u003d "dump"]; derefter # Backup bruger dump til FS i $ (filsystemer) gøre echo "Dumping $ (FS) $ (NFSMOUNT)" | \ tee-a $ (BACKUP_LOG) / bu.ufsdump. $ (MDY) / usr / sbin / ufsdump 0fu $ (NFSMOUNT) $ (FS) 2> & 1 | \ # Vi kun beskæftiger sig med de sidste to linjer af output # at afgøre, om det var et vellykket dump tee-a $ (BACKUP_LOG) / bu.ufsdump. $ (MDY) | tail -3 # Count dump filsystem FS_COUNT \u003d `expr $ (FS_COUNT) + 1« gjort anden # Backup bruger cpio til FS i $ (filsystemer) gøre echo "Skrivning cpio arkiv over $ (FS) til $ (NFSMOUNT)" | \ tee-a $ (BACKUP_LOG) / bu.cpio. $ (MDY). fejle \ >> $ (BACKUP_LOG) / bu.cpio. $ (MDY) # Produktionen af finde altid vil være i forhold til roden finde. $ (FS)-print-xdev | \ # Brug sed at ændre ". /" tilbage til "/" så Solaris cpio vil ikke bark sed -e 's / ^ \. \ / $ / \ / /' | \ cpio-oc-O $ (NFSMOUNT) / `hostname`. $ (MDY) \ 2>> $ (BACKUP_LOG) / bu.cpio. $ (MDY). Fejle \ 1>> $ (BACKUP_LOG) / bu.cpio. $ (MDY) # Tælle cpio archive filsystem FS_COUNT \u003d `expr $ (FS_COUNT) + 1« gjort cat $ (BACKUP_LOG) / bu.cpio. $ (MDY). fejle fi # Display filsystem de oplysninger, der var bare bakkes op echo "# # # øjeblikket monterede filsystemer:" df-k $ (filsystemer) echo "###" LOG_END \u003d `wc-l <$ (HARDWARE_LOG)` # Strip førende og efterfølgende mellemrum LOG_END \u003d `expr $ (LOG_END)` hvis [ "$ (LOG_BEGIN)"-ne "$ (LOG_END)"]; derefter # Rapport fejl i loggen under backup # Tilføje yderligere grep linjer for at fjerne normale beskeder vises i dine # System skovhugst script echo "# # # System logs genereres under backup:" cat $ (HARDWARE_LOG) | \ sed -e "1, $ (LOG_START) d" | \ grep-v "koble fra" | \ grep mod "nægtede forbindelsen fra" | \ nawk '(print substr ($ 0,1,78)); \ længde> 78 (print "" substr ($ 0,79)) ' echo "###" fi # Fjern gamle logfiler hvis [ "$ (BACKUPTYPE)" \u003d "cpio"]; derefter cd $ (BACKUP_LOG) finde. -mtime +14-follow-exec rm () \; ls-lt $ (BACKUP_LOG) / * echo fi echo "Backup Finished på" `dato` |
|
||||
|
Hvad er symtoms? Det er lidt svært at gætte, hvor du skal hen forkert blot ved at kigge i koden.
Jeg har bemærket en mindre problem her: Code:
case " ${EXCLUDE_FS} " in
# If its excluded do nothing
*" ${FS} "*);;
Tilfældet, når du opdaterer filsystemer forekommer unødigt kompliceret. Tilføje et mellemrum i begyndelsen af listen, hvis den er tom tilsyneladende harmløse at dømme ud fra, hvad du gør med den senere i koden. Mig, jeg vil vende EXCLUDE_FS i et regulært udtryk, og filtreres produktionen af df gennem egrep, og slippe af med, at hele BLOB af kode, anyway. Hvad er det punkt, for at eksportere alle disse variabler? Du er ikke påberåbe subcommands som har brug for dem, er du? Du synes at mangler en bindestreg foran muligheden her: Code:
grep v "refused connection from " | \ Korrekt indrykning ville sandsynligvis hjælpe lidt her ... |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|