2017-01-19 26 views
1

EDIT 1:約Multi-dimensional arrays in Bash、私が理解できる限り、すべての答えと例は連想配列で、数値の多次元配列ではありません。彼らは1つの値を持つ索引に名前をつけました.1つ以上の値を持つ数値索引ではありません。数値多次元配列(AKA 2D配列または二次元配列) - Bash

EDIT 2:おそらく、私が普通にできるように、配列内の2番目のインデックスの2番目の値を取得するために、私がBashで望むことをするのは不可能かもしれません:echo $A[1][1] PHPなど。

編集3:this other questionによれば、私はこれが「人間が読める」方法でBashで行うことはできないとほとんど確信しています。 PHPで


これは数値の多次元配列を作成する方法を示します。

<?php 
$b[]=array("Apple's Mac","UNIX from Ken, Dennis, Douglas and Peter"); 
$b[]=array("Sun Microsystems' Solaris","Linus Torvalds' Linux"); 

//or: 

$b=array(
    array("Apple's Mac","UNIX from Ken, Dennis, Douglas and Peter"), 
    array("Sun Microsystems' Solaris","Linus Torvalds' Linux") 
); 

print_r($b); 

/*Array 
(
    [0] => Array 
     (
      [0] => Apple's Mac 
      [1] => UNIX from Ken, Dennis, Douglas and Peter 
     )  
    [1] => Array 
     (
      [0] => Sun Microsystems' Solaris 
      [1] => Linus Torvalds' Linux 
     )  
)*/ 

//To access the first numeric array: 

print_r($b[0]); 

?> 

私はバッシュでこれを行うことができますどのように?

A=(
"Apple's Mac" "UNIX from Ken, Dennis, Douglas and Peter" 
"Sun Microsystems' Solaris" "Linus Torvalds' Linux" 
) 

#Trying to print the second array inside array ${A[@]}... 
echo ${A[1]} 
#It prints: 
UNIX from Ken, Dennis, Douglas and Peter 

#The same if I do: 

X=("Apple's Mac" "UNIX from Ken, Dennis, Douglas and Peter") 
Y=("Sun Microsystems' Solaris" "Linus Torvalds' Linux") 
A=(
"${X[@]}" 
"${Y[@]}" 
) 
echo ${A[1]} 
#It prints: 
UNIX from Ken, Dennis, Douglas and Peter 

私は私が欲しい取得するために見つけることができる唯一の「ハック」方法:これは私がこれまで試したものです

A=(
"Apple's Mac|UNIX from Ken, Dennis, Douglas and Peter" 
"Sun Microsystems' Solaris|Linus Torvalds' Linux" 
) 

#Printing the second index of the array 
echo ${A[1]} 
#It prints: 
Sun Microsystems' Solaris|Linus Torvalds' Linux 

#Accessing the second "value" of the second index 
echo ${A[1]} | cut -d'|' -f2 
#It prints: 
Linus Torvalds' Linux 

しかし、やって簡単に、より正確、適切な方法があるに違いありません同じ...

ありがとうございました。もちろん

source ./multi-array.save 

あなたが戻って異なるアレイをロードする必要がある場合は、次の

#!/bin/bash 

A1=("Apple's Mac" "UNIX from Ken, Dennis, Douglas and Peter") 
A2=("Sun Microsystems' Solaris" "Linus Torvalds' Linux") 

declare -p A1 A2 > multi-array.save 

のように宣言して使用することができます。

+1

「A」は、「X」と「Y」の内容を持つ複数要素の配列になります。その2番目の要素は、あなたが印刷したものです – Inian

+0

はい、これは私が得たいものとは異なります。 bash配列の2番目のインデックスは、PHPコードから取得したのと同じ方法で配列にする必要があります。 – Roger

+0

[BASHでの多次元配列]の重複の可能性があります。(0120-385-205) –

答えて

0

ない最高のが、ここでは、別のソリューションです、それはではない多次元ですが、メモリのためにそれは何か似ています。

+0

あなたのソリューションで「Linus Torvalds 'Linux」の値にアクセスするにはどうすればよいですか? – Roger