[unix] shell script if NOT statement

Pagina: 1
Acties:

  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Topicstarter
Ik heb het volgende script:

code:
1
2
3
4
5
dag=`date +%a`
if [ "$dag" != "Sat" -o "$dag" != "Sun" ]
then
    maak backup
fi

Dit script moet een backup maken als het niet zaterdag of zondag is, maar het if statement werkt niet helemaal goed.

Hoe doe ik een NOT statement ('!=' werkt niet, '<>' werkt ook niet) en hoe maak ik em zo, dat hij ook nog de OR goed doet ('-o' zou het moeten zijn).

  • Akerboom
  • Registratie: Juni 2001
  • Laatst online: 16:52

Akerboom

Codito, ergo sum

code:
1
2
3
4
5
dag=`date +%a`
if [ \("$dag" != "Sat"\) -o \("$dag" != "Sun"\) ] ;
then
    maak backup
fi


[edit]
Al gedacht aan een CRON Job?

[ Voor 33% gewijzigd door Akerboom op 21-10-2004 16:39 ]


  • stefklep
  • Registratie: Januari 2003
  • Laatst online: 06-02 11:04

stefklep

((Stefklepje))

TormentoR schreef op 21 oktober 2004 @ 16:38:
code:
1
2
3
4
5
dag=`date +%a`
if [ \("$dag" != "Sat"\) -o \("$dag" != "Sun"\) ] ;
then
    maak backup
fi


[edit]
Al gedacht aan een CRON Job?
Crontab kan je precies aangeven welke dag maand en minuten dat hij moet uitvoeren lijkt mijn handiger dan dit

  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
intermusic schreef op 21 oktober 2004 @ 16:33:
dat hij ook nog de OR goed doet
Zou je niet beter een AND kunnen doen? Het is elke dag niet zaterdag OF niet zondag.

Verwijderd

Gebruik eens "-a" i.p.v. "-o".
Maak backup als dag niet zaterdag is en niet zondag.
Zaterdag is nooit zondag.

te laat.....

[ Voor 16% gewijzigd door Verwijderd op 21-10-2004 16:50 ]


  • Blaasvis
  • Registratie: November 2001
  • Laatst online: 13:16

Blaasvis

Cidora \o/

volgens mij was het gewoon een ! teken voor de statement ;)

code:
1
2
3
4
5
dag=`date +%a`
if [ ! "$dag" == "Sat" -o "$dag" == "Sun" ]
then
    maak backup
fi

[ Voor 16% gewijzigd door Blaasvis op 21-10-2004 17:47 ]

Freedom is everything you need ; <moto-moi|afk> ik verkloot het gewoon nooit :P


  • smokalot
  • Registratie: Juni 2001
  • Laatst online: 15-01 22:00

smokalot

titel onder

Blaasvis schreef op 21 oktober 2004 @ 17:46:
volgens mij was het gewoon een ! teken voor de statement ;)

code:
1
2
3
4
5
dag=`date +%a`
if [ ! "$dag" == "Sat" -o "$dag" == "Sun" ]
then
    maak backup
fi
ik vermoed dat de ! in dit geval alleen over "$dag" == "Sat" reikt, en de statement is dus waar indien het niet zaterdag is in dit geval. dat is dus niet de bedoeling.

It sounds like it could be either bad hardware or software


  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Topicstarter
Dank jullie wel.
Het is wel gewoon '!=' en het moet idd AND zijn (-a)
Dan werkt ie.

code:
1
2
3
4
5
dag=`date +%a`
if [ "$dag" != "Sat" -o "$dag" != "Sun" ]
then
    maak backup
fi

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Maar nou heb je nog niet gereageerd op de opmerking waarom je zo moeilijk doet en niet gewoon cron gebruikt wat speciaal gemaakt is om periodiek op bepaalde tijdstippen iets uit te voeren.

  • Wilke
  • Registratie: December 2000
  • Laatst online: 19:49
intermusic schreef op 21 oktober 2004 @ 16:33:
Ik heb het volgende script:

[knip]

Dit script moet een backup maken als het niet zaterdag of zondag is, maar het if statement werkt niet helemaal goed.
Wat dacht je van:

code:
1
2
crontab:
0 0 * * 1-5 /pad/naar/maak_backup_script


Lijkt me een stuk korter en handiger; cron is voor dit soort dingen gemaakt.

  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03-2025

intermusic

Marc Hoekstra

Topicstarter
blaataaps schreef op 22 oktober 2004 @ 12:40:
Maar nou heb je nog niet gereageerd op de opmerking waarom je zo moeilijk doet en niet gewoon cron gebruikt wat speciaal gemaakt is om periodiek op bepaalde tijdstippen iets uit te voeren.
Het bestand met deze code staat in een map cron.daily.
In de cron hebben we aangegeven dat hij alle bestanden in de map cron.daily uitvoert om 12:00 uur 's nachts.
Indirect is het dus gewoon lekker een cron-job :9

misschien had ik iets duidelijker moeten zijn

[ Voor 7% gewijzigd door intermusic op 22-10-2004 12:58 ]


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
En je vindt het niet een beetje dubbel cron te gebruiken om een script aan te roepen dat de functionaliteit van cron nabootst? :)

  • Wilke
  • Registratie: December 2000
  • Laatst online: 19:49
intermusic schreef op 22 oktober 2004 @ 12:56:
Het bestand met deze code staat in een map cron.daily.
In de cron hebben we aangegeven dat hij alle bestanden in de map cron.daily uitvoert om 12:00 uur 's nachts.
Dat doet die van mij dus ook, en tegelijkertijd checkt 'ie welke dag van de week (0=zondag, 6=zaterdag, dus 1-5 is maandag-vrijdag)
Indirect is het dus gewoon lekker een cron-job :9
En het komt je niet als 'vreemd' voor dat je functionaliteit die al in Cron zit (en wel op een veel eenvoudiger manier) zelf opnieuw gaat zitten scripten in bash, terwijl je cron al gebruikt om dat bash-script aan te roepen :?

[ Voor 6% gewijzigd door Wilke op 22-10-2004 13:13 ]


  • Seth4Chaos
  • Registratie: Maart 2001
  • Niet online

Seth4Chaos

that's me...

Als je je script zo graag in een /etc/cron.* directory zet dan maak je toch even een nieuwe directory aan "/etc/cron.weekdays" en zet je deze vervolgens in de /etc/crontab
code:
1
2
3
4
5
6
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * 1-5 root run-parts /etc/cron.weekdays
42 4 1 * * root run-parts /etc/cron.monthly


kan je het lekker in een dir laten staan en hoef je ook niet te kloten met die AND en OR

Mistakes are proof that you are trying...

Pagina: 1