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
Arrays i awk catwoman Shell Programmering og Scripting 5 07-28-2008 02:51 AM
Brug for hjælp med awk og arrays fusionX Shell Programmering og Scripting 7 02-11-2008 06:41 PM
awk arrays imonthejazz Shell Programmering og Scripting 1 09-21-2007 10:29 AM
arrays i awk??? craigsky Shell Programmering og Scripting 3 08-27-2007 10:13 PM
Ksh og arrays whited05 Shell Programmering og Scripting 1 06-24-2005 01:07 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 10-06-2008
ricardo.ludwig ricardo.ludwig is offline
Registreret Bruger
  
 

Join Date: Mar 2008
Stillinger: 10
Eksport Arrays i ksh

Hej alle!

Derfor kan jeg eksportere arrays i ksh?
Jeg Trie dette for exemplo:

I moderselskabet script

array [0] \u003d a
array [1] \u003d b
array [2] \u003d c

eksport array

Når jeg ser den variable array i barn-script der er kun første indeks.

For exemplo i barn script

+ echo $ (array [*])
en

Men jeg ønsker, at alle indeks.
Enhver idé?
  #2 (permalink)  
Old 10-06-2008
bakunin bakunin is offline Forum Staff  
Bughunter ekstraordinære
  
 

Join Date: May 2005
Beliggenhed: I den venstre byte i / dev / kmem
Indlæg: 1.629
Arrays kan ikke eksporteres på samme måde variabler kan være. Dette er en kendt limitiation i Korn Shell. Du kan eksportere hver enkelt array element (ved hjælp af array navn dette er det første element, som standard, som du allerede har oplevet), men ikke array selv.

Enten du gøre noget lignende:

Code:
(( iCnt = 0 ))
while [ $iCnt -lt ${array[*]} ] ; do
     export array[$iCnt]
     (( iCnt += 1 ))
done
eller du gør en lille trick: du kan passere arrays navn som en parameter til en underrutine, ja? Så brug eval at kopiere array i et lokalt array. Her er et eksempel:

Code:
function pShowArray
{
typeset    chArrayName="$1"
typeset -i iCnt=0

(( iCnt = 0 ))                  # copy array into local (to the function) array
while [ $iCnt -le $(eval print \${#$1[*]}) ] ; do
     typeset aLocalArray[$iCnt]=$(eval print - \${$1[$iCnt]})
     (( iCnt += 1 ))
done

print - "The passed array is named: $chArrayname"
print - "It has ${#aLocalArray[@]} elements, which are:"

(( iCnt = 0 ))
while [ $iCnt -le ${#aLocalArray[@]} ] ; do
     print - "Element #${iCnt} is \"${aLocalArray[$iCnt]}\""
     (( iCnt += 1 ))
done

return 0
}

# ---- function main

typeset aArrOne[0]="foo"
typeset aArrOne[1]="bar"
typeset aArrOne[2]="wee"
typeset aArrOne[3]="duh"

typeset aArrTwo[0]="1"
typeset aArrTwo[1]="2"
typeset aArrTwo[2]="3"

pShowArray aArrayOne

pShowArray aArrayTwo

exit 0
Jeg håber dette hjælper. Det er lidt ligesom at sende parametre via en pegepind i stedet for at overføre dem direkte, er det ikke?

bakunin
  #3 (permalink)  
Old 10-06-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmør, forfatter
  
 

Join Date: Mar 2007
Beliggenhed: Toronto, Canada
Stillinger: 2361

Du kan ikke eksportere arrays.

Den nemmeste måde at passere en matrix, er at konvertere den til en skalar variabel, med de elementer adskilt af en karakter, der ikke anvendes i nogen af de elementer. For eksempel bruger dette en ny linje:

Code:
array_separator='
' ## adjust as needed
array=( a b c )
array_contents=$( printf "%s$array_separator" "${array[@]}" )
export array_separator array_contents
At konvertere det tilbage til en matrix:

Code:
oIFS=$IFS
IFS=$array_separator
array=( $array_contents )
IFS=$oIFS
  #4 (permalink)  
Old 10-06-2008
ricardo.ludwig ricardo.ludwig is offline
Registreret Bruger
  
 

Join Date: Mar 2008
Stillinger: 10
Trouble løst

Bakunin og cfajohnson tak for din hjælper.
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:49 AM.


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