The UNIX and Linux Forums  

Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
wachten tot bestand geladen mogabr Programmeren en Shell Scripting 1 08-08-2008 11:24
Help shell script lus door bestanden update CTL bestand moet worden geladen sql dba_nh Programmeren en Shell Scripting 1 04-15-2008 09:00 PM
Hoe kan ik de opdracht voor controle om te zien of een bestand leeg is vóór de uitvoering? chrchcol Programmeren en Shell Scripting 3 07-29-2006 04:14
tenuitvoerleggingsstaat *. bat bestand op de vensters van Unix vak via ftp command ALX Programmeren en Shell Scripting 9 01-29-2006 06:31 PM
tenuitvoerleggingsstaat richt of ls commando via FTP ALX Programmeren en Shell Scripting 5 01-27-2006 06:13 PM

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 Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Geregistreerde gebruiker
  
 

Join Datum: maart 2009
Posts: 5
Help tenuitvoerleggingsstaat commando geladen uit bestand

Ik moet een opdracht uit te voeren dat wordt geladen vanuit een bestand.

In principe hebben we een aantal scripts die moeten worden uitgevoerd op geplande tijdstippen.
We gaan voor het opslaan van die tijden in de database en update een bestand met gegevens.
In dat bestand we hebben Scriptnaam, inputParameters, Runtimes, enz. ..
Ik koos voor het gebruik van Tilda (~) als scheidingsteken als het niet kan worden gebruikt door een van de input variabelen

Ik heb het allemaal werkt, met een uitzondering.
Als een inputParameter moet worden uitgevoerd (huidige datum `date + '% d% m" ")

Dan krijg ik deze foutmelding:

Code:
./chk_master_script.sh[247]: `date +%m%d`:  not found
Launching script (with parameters): $HOME/daily/scripts/workit.sh

Dit is ongeveer hoe ik het laden van de gegevens:

Code:
if [ -s ${masterDataFile} ]; then
  fileExists=true
  IFS="~"
  while read workerScript parameters timingStuff; do
    ...
    params=`${parameters}`
    echo "Launching script (with parameters): ${workerScript} ${params}"
    ...
  done

File Layout:

Code:
filename~parameters~schedulingStuffHere

Voorbeeldbestand Inhoud:

Code:
workerScript.sh~`date '+%m%d'`~stuffGoesHere

Bedankt
  #2 (permalink)  
Old 03-17-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmeur, auteur
  
 

Join Datum: maart 2007
Plaats: Toronto, Canada
Berichten: 2.373
Citaat:
Oorspronkelijk geplaatst door GoldenEye4ever View Post
Ik moet een opdracht uit te voeren dat wordt geladen vanuit een bestand.

In principe hebben we een aantal scripts die moeten worden uitgevoerd op geplande tijdstippen.
We gaan voor het opslaan van die tijden in de database en update een bestand met gegevens.

Zou het niet eenvoudiger te gebruiken een cron job?
Citaat:
In dat bestand we hebben Scriptnaam, inputParameters, Runtimes, enz. ..
Ik koos voor het gebruik van Tilda (~) als scheidingsteken als het niet kan worden gebruikt door een van de input variabelen

Ik heb het allemaal werkt, met een uitzondering.
Als een inputParameter moet worden uitgevoerd (huidige datum `date + '% d% m" ")

Dan krijg ik deze foutmelding:

Code:
./chk_master_script.sh[247]: `date +%m%d`:  not found
Launching script (with parameters): $HOME/daily/scripts/workit.sh

Dit is ongeveer hoe ik het laden van de gegevens:

Code:
if [ -s ${masterDataFile} ]; then
  fileExists=true
  IFS="~"
  while read workerScript parameters timingStuff; do
    ...
    params=`${parameters}`

Volgens de inhoud die je hebt gepost, de backticks reeds aanwezig zijn. Eval gebruiken om het uit te voeren:


Code:
eval "params=${parameters}"

Citaat:

Code:
    echo "Launching script (with parameters): ${workerScript} ${params}"
    ...
  done

File Layout:

Code:
filename~parameters~schedulingStuffHere

Voorbeeldbestand Inhoud:

Code:
workerScript.sh~`date '+%m%d'`~stuffGoesHere

Bedankt


Code:
if [ -s ${masterDataFile} ]; then
  fileExists=true
  
  while IFS="~" read workerScript parameters timingStuff; do
    ...
    eval "params=${parameters}"
    echo "Launching script (with parameters):"
    ${workerScript} ${params}
    ...
  done

Afhankelijk van de cntents van $ params, moet u mogelijk citeer de uitbreiding:


Code:
${workerScript} "${params}"


  #3 (permalink)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Geregistreerde gebruiker
  
 

Join Datum: maart 2009
Posts: 5
Thanks a lot cfajohnson,
You rule

Maar nu heb ik een andere vraag

Ik heb mijn attributen geëvalueerd, maar ik moet overwegen of meerdere attributen worden doorgegeven, als een string

Kortom, ik nodig om de tokens parameters string

Dit is wat ik heb tot nu toe:

Code:
...
evalParams()
{
  output=""
  input="$1"
  set -A attr $(echo ${input} | tr ',' ' ' )
  
  n="0"
  while [ "${n}" -lt "${#attr[*]}" ];
  do
    eval "p=${attr[${n}]}"
    output="${output} ${p}"
    n=`expr $n + 1`
  done
  
  echo ${output}
}
...
## this is actually loaded from file, but for the purpose of an example it's fine :)
parameters="`date +%m%d`,`date +%H%M`"
...
params=`evalParams ${parameters}`

Helaas is het niet werkt
De attr array niet wordt bevolkt zoals ik verwacht,
de entrie parameter string net krijgt toegewezen aan de 1e-index (index 0)



Wat cronjobs, we proberen om onze plannen in de DB.
- Wij willen dat onze schema's worden gecentraliseerd
- Maakt het leren van de tijden van de partij gemakkelijker

Laatst bewerkt door GoldenEye4ever; op 03.18.2009 12:50 AM..
  #4 (permalink)  
Old 03-17-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmeur, auteur
  
 

Join Datum: maart 2007
Plaats: Toronto, Canada
Berichten: 2.373


Code:
evalParams()
{
  oldIFS=$IFS
  IFS=,
  set -f
  set -- $1
  set +f
  IFS=$oldIFS

  for parm
  do
    eval "printf '%s ' $parm"
  done
}

  #5 (permalink)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Geregistreerde gebruiker
  
 

Join Datum: maart 2009
Posts: 5
Thank you so much

Je bent de beste
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 06:03 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0