The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
vente fil indlæses mogabr Shell Programmering og Scripting 1 08-08-2008 11:24 AM
Hjælp shell script til at sløjfe gennem filer opdatering CTL-fil, der skal sql lastes dba_nh Shell Programmering og Scripting 1 04-15-2008 09:00 PM
Hvordan kan jeg gøre for kommando tjekke for at se, om en fil er tom, inden fuldbyrdende? chrchcol Shell Programmering og Scripting 3 07-29-2006 04:14 AM
fuldbyrdende *. bat-fil på vinduer fra Unix box via ftp kommando ALX Shell Programmering og Scripting 9 01-29-2006 06:31 PM
fuldbyrdende dir eller ls kommando via FTP ALX Shell Programmering og 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 Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Registreret Bruger
  
 

Join Date: Mar 2009
Stillinger: 5
Hjælp fuldbyrdende kommando indlæses fra filen

Jeg har brug for til at udføre en kommando, der er indlæst fra en fil.

Dybest set har vi flere scripts, der skal køre på det planlagte tidspunkter.
Vi opbevarer dem gange i databasen og opdatering af en fil med data.
I denne fil vi vil have scriptName, inputParameters, Runtimes osv. ..
Jeg valgte at bruge tilda (~) som afgrænsningstegn da det ikke kan bruges af nogen af de Inputvariablerne

Jeg fik det hele fungerer, med én undtagelse.
Hvis en inputParameter skal udføres (aktuelle dato «dato + '% d% m'«)

Så jeg får denne fejl:
Code:
./chk_master_script.sh[247]: `date +%m%d`:  not found
Launching script (with parameters): $HOME/daily/scripts/workit.sh
Det svarer stort set, hvordan jeg indlæse 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 Indhold:
Code:
workerScript.sh~`date '+%m%d'`~stuffGoesHere
Tak
  #2 (permalink)  
Old 03-17-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmør, forfatter
  
 

Join Date: Mar 2007
Beliggenhed: Toronto, Canada
Stillinger: 2361
Citat:
Oprindeligt Indsendt af GoldenEye4ever View Post
Jeg har brug for til at udføre en kommando, der er indlæst fra en fil.

Dybest set har vi flere scripts, der skal køre på det planlagte tidspunkter.
Vi opbevarer dem gange i databasen og opdatering af en fil med data.

Ville det ikke være lettere at bruge en cron job?
Citat:
I denne fil vi vil have scriptName, inputParameters, Runtimes osv. ..
Jeg valgte at bruge tilda (~) som afgrænsningstegn da det ikke kan bruges af nogen af de Inputvariablerne

Jeg fik det hele fungerer, med én undtagelse.
Hvis en inputParameter skal udføres (aktuelle dato «dato + '% d% m'«)

Så jeg får denne fejl:
Code:
./chk_master_script.sh[247]: `date +%m%d`:  not found
Launching script (with parameters): $HOME/daily/scripts/workit.sh
Det svarer stort set, hvordan jeg indlæse data:
Code:
if [ -s ${masterDataFile} ]; then
  fileExists=true
  IFS="~"
  while read workerScript parameters timingStuff; do
    ...
    params=`${parameters}`

Ifølge indholdet du udstationeret, den backticks er der allerede. Brug eval at fuldbyrde det:

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

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
Afhængigt af cntents på $ params, kan du blive nødt til at citere en udvidelse:

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

  #3 (permalink)  
Old 03-17-2009
GoldenEye4ever GoldenEye4ever is offline
Registreret Bruger
  
 

Join Date: Mar 2009
Stillinger: 5
Thanks a lot cfajohnson,
du reglen

Men nu har jeg et andet spørgsmål

I've got mine attributter evalueret, men jeg er nødt til at overveje, om flere attributter er ført igennem, som en enkelt streng

Grundlæggende er jeg nødt til at tokenize den parametre string

Dette er hvad jeg har indtil nu:
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}`
Desværre er det ikke fungerer
Den attr array ikke bliver befolket som jeg havde forventet,
Det entrie parameter string bare bliver overdraget til den 1. indekset (indeks 0)



Som for cronjobs, vi forsøger at få vores planlægning i BF.
- Vi ønsker, at vores planer for at være centralt
- Gør læring de tider af partiet lettere

Senest redigeret af GoldenEye4ever; 03-18-2009 kl 12:50 AM..
  #4 (permalink)  
Old 03-17-2009
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmør, forfatter
  
 

Join Date: Mar 2007
Beliggenhed: Toronto, Canada
Stillinger: 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
Registreret Bruger
  
 

Join Date: Mar 2009
Stillinger: 5
Tak så meget

Du er den bedste
Closed Thread

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 11:46 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0