The UNIX and Linux Forums  
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.

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
vänta tills filen laddats mogabr Shell-programmering och Skript 1 08-08-2008 11:24
Hjälp shell script till loop genom filer uppdatera CTL filen att sql lastas dba_nh Shell-programmering och Skript 1 04-15-2008 09:00
Hur kan jag göra för kommandot kontrollera om en fil är tom innan den verkställer? chrchcol Shell-programmering och Skript 3 07-29-2006 04:14
verkställande *. bat-filen i Windows från Unix box via ftp kommandot ALX Shell-programmering och Skript 9 01-29-2006 06:31
verkställande dir eller ls-kommandot via FTP ALX Shell-programmering och Skript 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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Registered User
  
 

Join Date: mars 2009
Inlägg: 5
Hjälp verkställande kommandot läses in från fil

Jag måste köra ett kommando som laddas från en fil.

I princip har vi flera script som måste köras på schemalagda tider.
Vi kommer att lagra dessa gånger i databasen och uppdatera en fil med data.
I det ärende vi har scriptName, inputParameters, Runtimes, etc. ..
Jag valde att använda Tilda (~) som avgränsare som den inte kan användas av någon av de ingående variablerna

Jag har det alla som arbetar, med ett undantag.
Om en inputParameter måste verkställas (dagens datum "datum +"% d% m "")

Sedan får jag detta felmeddelande:
Kod:
./chk_master_script.sh[247]: `date +%m%d`:  not found
Launching script (with parameters): $HOME/daily/scripts/workit.sh
Detta är ungefär hur jag ladda data:
Kod:
if [ -s ${masterDataFile} ]; then
  fileExists=true
  IFS="~"
  while read workerScript parameters timingStuff; do
    ...
    params=`${parameters}`
    echo "Launching script (with parameters): ${workerScript} ${params}"
    ...
  done
Arkiv Layout:
Kod:
filename~parameters~schedulingStuffHere
Sample File Innehåll:
Kod:
workerScript.sh~`date '+%m%d'`~stuffGoesHere
Tack
  #2 (permalänk)  
Old 03-17-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmerare, författare
  
 

Join Date: mars 2007
Ort: Toronto, Kanada
Inlägg: 2361
Citat:
Ursprungligen postat av GoldenEye4ever View Post
Jag måste köra ett kommando som laddas från en fil.

I princip har vi flera script som måste köras på schemalagda tider.
Vi kommer att lagra dessa gånger i databasen och uppdatera en fil med data.

Vore det inte lättare att använda ett cron jobb?
Citat:
I det ärende vi har scriptName, inputParameters, Runtimes, etc. ..
Jag valde att använda Tilda (~) som avgränsare som den inte kan användas av någon av de ingående variablerna

Jag har det alla som arbetar, med ett undantag.
Om en inputParameter måste verkställas (dagens datum "datum +"% d% m "")

Sedan får jag detta felmeddelande:
Kod:
./chk_master_script.sh[247]: `date +%m%d`:  not found
Launching script (with parameters): $HOME/daily/scripts/workit.sh
Detta är ungefär hur jag ladda data:
Kod:
if [ -s ${masterDataFile} ]; then
  fileExists=true
  IFS="~"
  while read workerScript parameters timingStuff; do
    ...
    params=`${parameters}`

Enligt innehållet du postat den backticks redan där. Använd eval att verkställa sådana beslut:

Kod:
eval "params=${parameters}"
Citat:
Kod:
    echo "Launching script (with parameters): ${workerScript} ${params}"
    ...
  done
Arkiv Layout:
Kod:
filename~parameters~schedulingStuffHere
Sample File Innehåll:
Kod:
workerScript.sh~`date '+%m%d'`~stuffGoesHere
Tack

Kod:
if [ -s ${masterDataFile} ]; then
  fileExists=true
  
  while IFS="~" read workerScript parameters timingStuff; do
    ...
    eval "params=${parameters}"
    echo "Launching script (with parameters):"
    ${workerScript} ${params}
    ...
  done
Beroende på cntents på $ params kan du behöva citera expansion:

Kod:
${workerScript} "${params}"

  #3 (permalänk)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Registered User
  
 

Join Date: mars 2009
Inlägg: 5
Tack så mycket cfajohnson,
du regeln

Men nu har jag en annan fråga

Jag har mina attribut utvärderas, men jag måste överväga om flera attribut är passerat, som en enda strängen

I grund och botten, jag måste tokenize den parametrar string

Detta är vad jag har hittills:
Kod:
...
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}`
Tyvärr är det inte fungerar
Den ATTR array inte befolkade som jag väntat
den entrie parameter string bara får tilldelas 1:a index (index 0)



När det gäller cronjobs, vi försöker få vår planering i BF.
- Vi vill att våra scheman som centraliserade
- Gör lärande i tider av partiet lättare

Senast redigerad av GoldenEye4ever; 03-18-2009 at 12:50..
  #4 (permalänk)  
Old 03-17-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmerare, författare
  
 

Join Date: mars 2007
Ort: Toronto, Kanada
Inlägg: 2361

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

  for parm
  do
    eval "printf '%s ' $parm"
  done
}
  #5 (permalänk)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Registered User
  
 

Join Date: mars 2009
Inlägg: 5
Tack så mycket

Du är den bästa
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 06:57.


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