Toon posts:

bash script

Pagina: 1
Acties:

Verwijderd

Topicstarter
set LOG_FILE=/var/backup/backup.txt
set OUTPUT_FILE=/var/backup/backup.tgz


#maak dir
function createdirs {
if test -d /var/backup; then
echo directory aanwezig
else
mkdir /var/backup
fi
}

#Deze logt
function log {
if test "$1"="start"; then
echo backup gestart op date >$LOG_FILE
fi
if test "$1"="stop"; then
echo backup gereed op date >$LOG_FILE
fi
}

function backup {
tar -cZf /home/erik/backup/backup.tar /home/erik/
}

#---------------------------Main-----------------------------------------------#

log start
echo $USER
if test "$USER"="root"; then
createdirs
backup
log stop
else
echo you must be root to run this script
echo "program exit with code 1"
echo echo you must be root to run this script >SLOG_FILE
log stop
exit 1
fi

Dit is mijn output:

backup.sh: $LOG_FILE: ambiguous redirect
backup.sh: $LOG_FILE: ambiguous redirect
root@linux:/home/erik/bash > bash backup.sh
start
backup.sh: $LOG_FILE: ambiguous redirect
backup.sh: $LOG_FILE: ambiguous redirect
erik
directory aanwezig
stop
backup.sh: $LOG_FILE: ambiguous redirect
backup.sh: $LOG_FILE: ambiguous redirect echo $1

//output

if test "$USER"="root"; then
blah

Ook dit werkt niet, of ik nu root ben of wat anders, hij doet blah gewoon altijd:(.

Weet iemand de oplossing?

[ben newbie, maar dat leek me wel duidelijk :)

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
echo backup gestart op date >$LOG_FILE
fi
if test "$1"="stop"; then
echo backup gereed op date >$LOG_FILE

hier zou ik sowiezo >> gebruiken, dan voegt ie het ipv de hele file te overschrijven (append ipv overwrite).

En je if syntax is niet helemaal correct hier en daar.

Sample: Basic conditional example if .. then



#!/bin/bash
if [ "foo" = "foo" ]; then
echo expression evaluated as true
fi
zo hoort het.


echo echo you must be root to run this script >SLOG_FILE

dat lijkt me een tikfout? $LOG_FILE denk ik, en eenmaal echo lijkt me voldoende.

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
ohja, tip om te lezen:
http://www.ibiblio.org/pub/Linux/docs/HOWTO/Bash-Prog-Intro-HOWTO


komt mijn voorbeeldje ook vandaan.

  • zaphod_b
  • Registratie: Oktober 2001
  • Laatst online: 14-08 09:48
export VAR=<value>

werkt beter dan set. da's wat anders namelijk :)

* zaphod_b moet opeens denken aan Good Old Commodore Basic...
10 let var="stringetje"

>:)

Verwijderd

Topicstarter
if ["$USER" = "root"]; then
blah
fi

geeft dit resultaat:

./backup.sh: [erik: command not found

Wat kan er fout zijn?

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
de quotes om "root" weghalen.

Edit: en om "$USER"

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16-08 16:08

deadinspace

The what goes where now?

Op maandag 17 december 2001 15:37 schreef blaataaps het volgende:
de quotes om "root" weghalen.

Edit: en om "$USER"
De quotes gewoon laten staan... deze voorkomen dat bash eventuele spaties (die eigenlijk niet in usernames mogen, magoed) interpreteert.
Je moet tussen de [ en de string ("$USER" dus) een spatie zetten, en tussen de andere string en de ] ook.
'[' is namelijk een programmatje dat test of de conditie die je erna opgeeft waar is (en ] wordt gezien als afsluitingsteken).

  • CyeZ
  • Registratie: September 2001
  • Laatst online: 20:05

CyeZ

Vroem vroem!!!

Op maandag 17 december 2001 15:15 schreef Sire het volgende:
if ["$USER" = "root"]; then
blah
fi

geeft dit resultaat:

./backup.sh: [erik: command not found

Wat kan er fout zijn?
Correct me if i'm wrong (heb al een poosje niet meer met bash-scripts gewerkt) maar volgens mij is '=' een toekenning en '==' een vergelijking van een variable. In dit geval zul je waarschijnlijk '==' willen gebruiken in je if-statement, anders zal de code binnen de if-statement altijd worden uitgevoerd.

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
nope. jij denkt aan programmeertalen, als je == doet, gaat bash zeuren over dat ie binary zut verwacht.
bash is een ranzig taaltje, dus = voldoet hier prima : )
zoals ik het net poste, werkte het hier prima.

  • CyeZ
  • Registratie: September 2001
  • Laatst online: 20:05

CyeZ

Vroem vroem!!!

Op maandag 17 december 2001 20:16 schreef blaataaps het volgende:
nope. jij denkt aan programmeertalen, als je == doet, gaat bash zeuren over dat ie binary zut verwacht.
bash is een ranzig taaltje, dus = voldoet hier prima : )
zoals ik het net poste, werkte het hier prima.
k, vandaar ook dat ik erbij zette dat ik het niet zeker wist. Als het met '=' werkt dan zou dat dus inderdaad niet de fout moeten zijn.

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
hmm, deadinspace heeft vast gelijker dan ik ja, ik had automatisch al spaties getypt daar ja : )

en er horen idd geen spaties in een username te zitten : )

  • yeadder
  • Registratie: Maart 2001
  • Niet online
ik weet niet of het gezegd is maar toch:

er moet
code:
1
#! /bin/sh

boven

zo dat de shell weet dat sh het moet uitvoeren


of klopt dit niet ??

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16-08 16:08

deadinspace

The what goes where now?

Op maandag 17 december 2001 20:38 schreef yeadder het volgende:
ik weet niet of het gezegd is maar toch:

er moet
code:
1
#! /bin/sh

boven

zo dat de shell weet dat sh het moet uitvoeren


of klopt dit niet ??
of /bin/bash
of /usr/bin/ksh
of /usr/bin/perl
enz, afhankelijk van voor welke interpreter je script is.

In bash mag je afaik zowel = als == gebruiken in een vergelijking.

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
er moet
#!/bin/bash

(of sh of whatever) boven, /zonder/ de spatie.

En je hebt gelijk met die ==, ik dacht dat == niet mocht, die ging een keer zeuren bij mij, maar dat lag dan denk ik aan iets anders : )

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16-08 16:08

deadinspace

The what goes where now?

Op maandag 17 december 2001 21:25 schreef blaataaps het volgende:
er moet
#!/bin/bash

(of sh of whatever) boven, /zonder/ de spatie.
Hmm, weet je dat zeker?
Ik doe altijd met spatie, en dat werkt (maar dat betekent niet automatisch dat het is zoals het hoort).
Maar als ik in de initscripts van mijn bak (Debian Sid) kijk, zie ik meer dan de helft van de scripts beginnen met een spatie daartussen...

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
ooh, je hebt gelijk : )

ik maakte denkfout.

de spatie mag er niet voor : )
dat is er bij mij ingehamerd, dacht ff dat ie er ook niet na macht.
De spatie mag er niet voor vanwege backward compatability.
Een spatie erna maakt niet uit, oude dingen denken dan toch dat het een comment is : )
Pagina: 1