The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
rsh manus med i ett för loop trekianov Shell-programmering och Skript 5 12-06-2008 12:39
medan loop problem amatuer_lee_3 Shell-programmering och Skript 7 05-13-2008 01:48
Script inte verkställande andra loop thumper Shell-programmering och Skript 2 05-07-2008 05:10
Även loop problem rcunn87 Shell-programmering och Skript 0 06-20-2006 05:26
inte riktigt säker på hur man loop detta script! moxxx68 Shell-programmering och Skript 3 09-09-2004 08:00

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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 09-15-2007
lodey lodey is offline
Registered User
  
 

Join Date: Sep 2007
Inlägg: 29
Problem med en om / då slinga inom ett script

Hallå där,

Jag har skrivit ett skript för att rensa ut loggfiler från var / tmp dir. Det fungerar upp till en punkt. Vad jag behövde göra var att stänga scriptet om det fanns några filer som ska raderas. Jag kan få detta arbetar på ett testunderlag men när jag genomföra den i mitt program det fel med en "då" inte motsvaras fel. Jag har spåra den till raden i skriptet: om [TEMP \u003d "0"]; sedan

Kan någon ta en titt på den och oss på mig där jag gick fel eller peka mig i rätt riktning

Rgds
Colin

Här är utdrag ur manus som jag skapade:

#! / bin / sh
#
# Set lokala variabler
USER \u003d "/ usr / bin / whoami"
KONTO \u003d specs
Värdnamn \u003d "/ usr / bin / hostname"
DATE \u003d "/ usr / bin / date" +% Y% m% d `"
TEMP \u003d "hitta / var / tmp /-name" pärla * "-atime 3 | wc-l`
TEMPALL \u003d "hitta / var / tmp /-atime 3 | wc-l`
# Rensa gamla Loggfiler
hitta / users / aGaff / nospace / loggar /-name "*. txt" atime 1 | xargs rm-f
# Huvudskärm
klar
echo "<1> Radera GEM loggfiler på mottagande:" $ Värdnamn
echo "<2> Radera alla filer i / var / tmp (underhåll endast)
echo "<3> Avsluta - inga filer som ska tas bort"
echo ""
echo "Ange 1 eller 2 eller 3"
Läs svaret
om [$ answer \u003d "1"]; sedan
klar
echo "Undersöka Loggfiler för mottagande:" $ Värdnamn
echo ""
om [$ TEMP \u003d "0"]; sedan # (det är här det bomber ut)
echo
echo
echo "************************************************ *** "
echo "Det finns inga loggfiler som ska tas bort från värd:" $ Värdnamn
echo
Elif [$ TEMP> "0"];
sedan
echo "***********************************************"
echo "Det finns" $ TEMP "loggfiler som kan utgå från host:" $ Värdnamn
echo ""
echo ""
echo "<1> Radera GEM loggfiler på Host" $ Värdnamn "i / var / tmp katalogen"
echo "<2> Avsluta - inga filer som ska tas bort"
echo ""
echo "Ange 1 eller 2"
echo ""
Läs ANS1
om [$ ANS1 \u003d "1"]; sedan
klar
echo ""
echo ""
echo "Radera GEM loggfiler Loggfiler"
mkdir-p / users / aGaff / nospace / logs /
hitta / var / tmp /-name "pärla *"-atime 3> / users / aGaff / nospace / loggar / $ DATE "-" $ Värdnamn "-loggar". txt | xargs-f> / dev / null 2> & 1
echo ""
echo "************************************************ ************************"
echo "Tmp loggar nu utgå och loggfil uppdaterat"
echo ""
echo ""
Elif [$ ANS1 \u003d "2"]; sedan
echo "Exiting"
annan
echo "Ogiltigt val, spännande ..."
exit
fi
  #2 (permalänk)  
Old 09-15-2007
kamitsin's Avatar
kamitsin kamitsin is offline
Registered User
  
 

Join Date: Nov 2006
Ort: / dev / null
Inlägg: 177
Buddy det bombade hela platser.

Större fel.

1) Du gjorde heltal comparisoin på många ställen använder fel operatör.

2) mycket syntaxfel i eko

3) Jag tycker inte om strukturen i ditt manus. Du bör använda "fall" struktur istället.

4) om uttalande inte stängs ordentligt

Ändrad script:
PS: Jag har ändrat några stigar i skriptet att kolla på datorn.


Kod:
#!/bin/sh
#
# Set local variables
USER=`/usr/bin/whoami`
ACCOUNT=Compaq
HOSTNAME=`/usr/bin/hostname`
DATE=`/usr/bin/date "+%Y%m%d"`
TEMP=`find . -name "gem*" | wc -l`
TEMPALL=`find .  | wc -l`
# Purge old Log Files
#find /users/agaff/nospace/logs/ -name "*.txt" -atime +1|xargs rm -f
# Main Screen
clear
echo "<1> Delete GEM log files on host: " $HOSTNAME
echo "<2> Delete ALL Files in the /var/tmp ( maintenance only ) "
echo "<3> Exit - no files to be deleted"
echo ""
echo " Enter 1 or 2 or 3"
read ANSWER
if [ $ANSWER -eq "1" ]; then
clear
echo "Examining Log Files for host: " $HOSTNAME
echo ""
if [ $TEMP -eq "0" ]; then #(this is where it bombs out)
echo
echo
echo "***************************************************"
echo "There are no log files to be deleted from host:" $HOSTNAME
echo
elif [ $TEMP -gt "0" ];
then
echo "***********************************************"
echo "There are " $TEMP "log files that can be deleted from host:" $HOSTNAME
echo ""
echo ""
echo "<1> Delete GEM log files on Host" $HOSTNAME "in the /var/tmp directory"
echo "<2> Exit - no files to be deleted"
echo ""
echo " Enter 1 or 2"
echo""
read ANS1
if [ $ANS1 -eq "1" ]; then
clear
echo ""
echo ""
echo "Deleting GEM Logfiles Log Files"
#mkdir -p /users/agaff/nospace/logs/
#find /var/tmp/ -name "gem*" -atime +3 > /users/agaff/nospace/logs/$DATE"-"$HOST
NAME"-logs".txt| xargs -f >/dev/null 2>&1
echo ""
echo "************************************************************************"
echo "Tmp Logs are now deleted and logfile updated"
echo ""
echo ""
elif [ $ANS1 -eq "2" ]; then
echo "Exiting"
else
echo "Invalid selection, exiting..."
exit
fi
fi
fi

Skål,
K
  #3 (permalänk)  
Old 09-15-2007
lodey lodey is offline
Registered User
  
 

Join Date: Sep 2007
Inlägg: 29
Tack så mycket för hjälpen

Jag är nybörjare i Unix scripting och jag lärande som jag går så Evry lite hjälp är välkommen

Nu har jag ett fungerande manus
  #4 (permalänk)  
Old 09-18-2007
dewets dewets is offline
Registered User
  
 

Join Date: mars 2007
Ort: Somerset West, Sydafrika
Inlägg: 10
Bara för att lägga till min 0.02c värt:

Utnyttja dra i manusskrivning! Det gör underhåll på skriptet bara sooo mycket lättare.

Försöker hitta en nested Elif kommando i bland alla du "echo" är var ganska något:

#! / bin / sh
#
# Set lokala variabler
USER \u003d "/ usr / bin / whoami"
KONTO \u003d Compaq
Värdnamn \u003d "/ usr / bin / hostname"
DATE \u003d "/ usr / bin / date" +% Y% m% d `"
TEMP \u003d "hitta. -name "pärla *" | wc-l `
TEMPALL \u003d "hitta. | Wc-l `
# Rensa gamla Loggfiler
# finna / users / aGaff / nospace / loggar /-name "*. txt" atime 1 | xargs rm-f
# Huvudskärm
klar
echo "<1> Radera GEM loggfiler på mottagande:" $ Värdnamn
echo "<2> Radera alla filer i / var / tmp (underhåll endast)
echo "<3> Avsluta - inga filer som ska tas bort"
echo ""
echo "Ange 1 eller 2 eller 3"
Läs svaret
om [$ SVAR-eq "1"]; sedan
klar
echo "Undersöka Loggfiler för mottagande:" $ Värdnamn
echo ""
om [$ TEMP-eq "0"]; sedan # (det är här det bomber ut)
echo
echo
echo "*******************************************"
echo "Det finns inga loggfiler som ska tas bort från värd:" $ Värdnamn
echo
Elif [$ TEMP-gt "0"];
sedan
echo "****************************************"
echo "Det finns" $ TEMP "loggfiler som kan utgå från värdlandet"
$ Värdnamn
echo ""
echo ""
echo "<1> Radera GEM loggfiler på Host" $ Värdnamn "i / var / tmp katalogen"
echo "<2> Avsluta - inga filer som ska tas bort"
echo ""
echo "Ange 1 eller 2"
echo ""
Läs ANS1
om [$ ANS1-eq "1"]; sedan
klar
echo ""
echo ""
echo "Radera GEM loggfiler Loggfiler"
# mkdir-p / users / aGaff / nospace / logs /
# finna / var / tmp /-name "pärla *"-atime 3> / users / aGaff / nospace / loggar / $ DATE "-" $ HOST
NAMN "-loggar". Txt | xargs-f> / dev / null 2> & 1
echo ""
echo "*******************************************"
echo "Tmp loggar nu utgå och loggfil uppdaterat"
echo ""
echo ""
Elif [$ ANS1-eq "2"]; sedan
echo "Exiting"
annan
echo "Ogiltigt val, spännande ..."
exit
fi
fi
fi



Här endeth våra avläsningsnoggrannheten läxa för idag ...
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 11:39.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0