The UNIX and Linux Forums  
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
vente til filen lastes mogabr Shell programmering og Skripting 1 08-08-2008 11:24
Hjelp shell script å sløyfe gjennom filer oppdatering ctl filen skal sql loaded dba_nh Shell programmering og Skripting 1 04-15-2008 09:00
Hvordan kan jeg gjøre for kommando kontrollere om en fil er tom før? chrchcol Shell programmering og Skripting 3 07-29-2006 04:14
kjøre *. bat fil på Windows fra Unix boksen via FTP kommandoen ALX Shell programmering og Skripting 9 01-29-2006 06:31
utføring dir eller ls kommando via FTP ALX Shell programmering og Skripting 5 01-27-2006 06:13

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 denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Registrert bruker
  
 

Bli Date: Mar 2009
Innlegg: 5
Hjelp utfører kommandoen lastes inn fra filen

Jeg trenger å kjøre en kommando som lastes inn fra en fil.

I utgangspunktet har vi flere prosedyrer som må kjøre på planlagte tidene.
Vi skal lagre de gangene i databasen og oppdatere en fil med data.
I denne filen vi har scriptName, inputParameters, runTimes, etc. ..
Jeg valgte å bruke Tilda (~) som skilletegn som den ikke kan bli brukt av noen av input variablene

Jeg har alt fungerer, med ett unntak.
Hvis en inputParameter må utføres (gjeldende dato `date +"% d% m ' `)

Så jeg får denne feilmeldingen:
Code:
./chk_master_script.sh[247]: `date +%m%d`:  not found
Launching script (with parameters): $HOME/daily/scripts/workit.sh
Dette er omtrent slik jeg laste data:
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
Sample File Innhold:
Code:
workerScript.sh~`date '+%m%d'`~stuffGoesHere
Takk
  #2 (permalink)  
Old 03-17-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmerer, forfatter
  
 

Bli Date: Mar 2007
Bosted: Toronto, Canada
Innlegg: 2361
Sitat:
Originally Posted by GoldenEye4ever View Post
Jeg trenger å kjøre en kommando som lastes inn fra en fil.

I utgangspunktet har vi flere prosedyrer som må kjøre på planlagte tidene.
Vi skal lagre de gangene i databasen og oppdatere en fil med data.

Ville det ikke være enklere å bruke en cron-jobb?
Sitat:
I denne filen vi har scriptName, inputParameters, runTimes, etc. ..
Jeg valgte å bruke Tilda (~) som skilletegn som den ikke kan bli brukt av noen av input variablene

Jeg har alt fungerer, med ett unntak.
Hvis en inputParameter må utføres (gjeldende dato `date +"% d% m ' `)

Så jeg får denne feilmeldingen:
Code:
./chk_master_script.sh[247]: `date +%m%d`:  not found
Launching script (with parameters): $HOME/daily/scripts/workit.sh
Dette er omtrent slik jeg laste data:
Code:
if [ -s ${masterDataFile} ]; then
  fileExists=true
  IFS="~"
  while read workerScript parameters timingStuff; do
    ...
    params=`${parameters}`

Ifølge innholdet du har lagt den backticks allerede er der. Bruk eval å kjøre det:

Code:
eval "params=${parameters}"
Sitat:
Code:
    echo "Launching script (with parameters): ${workerScript} ${params}"
    ...
  done
File Layout:
Code:
filename~parameters~schedulingStuffHere
Sample File Innhold:
Code:
workerScript.sh~`date '+%m%d'`~stuffGoesHere
Takk

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
Avhengig av cntents på $ params, må du kanskje Sitat utvidelsen:

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

  #3 (permalink)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Registrert bruker
  
 

Bli Date: Mar 2009
Innlegg: 5
Takk cfajohnson,
du regelen

Men nå har jeg et annet spørsmål

Jeg har mine attributter vurdert, men jeg må vurdere om flere attributter er passert, som én streng

I utgangspunktet jeg trenger å tokenize den parametere string

Dette er hva jeg har så langt:
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}`
Dessverre er det ikke fungerer
Den attr array er ikke fylles ut som jeg forventet,
den entrie parameter strengen bare får tildelt 1. indeks (indeks 0)



Som for cronjobs vi prøver å få våre scheduling i DB.
- Vi vil at våre planer å bli sentralisert
- Får lære nytt av satsvise lettere

Sist endret av GoldenEye4ever; 03-18-2009 kl 12:50..
  #4 (permalink)  
Old 03-17-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmerer, forfatter
  
 

Bli Date: Mar 2007
Bosted: Toronto, Canada
Innlegg: 2361

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
Registrert bruker
  
 

Bli Date: Mar 2009
Innlegg: 5
Takk så mye

Du er den beste
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 09:09.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0